注册 登录
编程论坛 C++教室

C++中静态变量不能被继承,但是这个程序怎么看

xingbo2293 发布于 2011-05-16 22:20, 3945 次点击
#include<iostream.h>
class A {
public:
    static int num;
};
int A:: num=100;

class B:public A {
public:
    int i;
    B(int m):i(m)
    {}
};

int main()
{
    B b(5);
    cout<<b.num;
    return 1;
}
如果说不能继承,便不能再B类中,所以不会得出b.num。然而下载却得到了b.num...
求指教
5 回复
#2
xingbo22932011-05-16 22:38
没人说,我来说:静态变量是共享而不是继承,他可以被子类共享但是不能继承,不知道这样理解对吗?
#3
诸葛修勤2011-05-16 22:47
没有this指针的不能被继承 抓住这点就没有错

给段代码你测试下
程序代码:
#include<iostream>
using namespace std;

class A
{
public:
    static int num;
};
int A::num=100;

class B:public A
{
public:
    int i;
    B(int m):i(m)
    {}
};

int main()
{
    B b(5);

    cout << b.num << endl;
    b.num = 10;
    cout << b.num << endl;
    cout << B::num << endl;
    cout << A::num << endl << endl;

    cout << &B::num << endl;
    cout << &A::num << endl;
    cout << &b.num << endl;

    return 1;
}

#4
laigaoat20052011-05-16 22:53
呵呵,我刚刚看到这章:
c++primer 3rd p741中这么说的:
Query 基类定义了一个静态数据成员_text_file  
static vector<string> *_text_file;
     派生类 NameQuery会创建第二个_text_file实例(对于 NameQuery类而言是惟一的)吗?  
不,所有派生类对象都引用这个相同的、单一的、共享的静态成员,不论从Query派生了多少类,_text_file只存在一个实例 如果愿意的话 我们可以通过派生类对象用成员访问语法来访问它  
nameQueryObject._text_file; // ok
#5
xingbo22932011-05-17 10:26
回复 4楼 laigaoat2005
就是说可以在派生类中共享,派生类可以使用这个父类的静态变量,但是,不能称为继承。
#6
xingbo22932011-05-17 10:36
回复 3楼 诸葛修勤
经典啊,没有this指针的不能被继承...
1