父类的protected变量,子类不能访问???
#include <iostream>using namespace std;
class Demo
{
public:
double pubvalue = 10;
void foo()
{
cout << "Foo() is called..." << endl;
}
protected:
double provalue = 20;
void bar()
{
cout << "Bar() is called..." << endl;
}
private:
double privalue = 30;
void kao()
{
cout << "Kao() is called..." << endl;
}
// friend class Demo1;
};
class Demo1: public Demo
{
};
class Demo2: public Demo
{
};
int main(void)
{
Demo1 d1;
cout << d1.provalue << endl; // 这句话会报错
return 0;
} RT,在父类define了一个protected变量provalue
想通过子类对象访问(Java就是这么做的)
Demo1 d1;
cout << d1.provalue << endl;
为啥会报错呢????? 在线等,挺急的。。。。 谢谢!
#include <iostream>
using namespace std;
class Demo
{
public:
double pubvalue = 10;
void foo()
{
cout << "Foo() is called..." << endl;
}
protected:
double provalue = 20;
void bar()
{
cout << "Bar() is called..." << endl;
}
private:
double privalue = 30;
void kao()
{
cout << "Kao() is called..." << endl;
}
// friend class Demo1;
};
class Demo1: public Demo
{
//子类的方法才能访问基类的protected 对象
public:
void display()
{
cout << provalue<< endl;
}
};
class Demo2: public Demo
{
};
int main(void)
{
Demo1 d1;
//你这不叫子类访问父类的变量,你这是在类外部访问类的protected 对象,所以会报错。
//cout << d1.provalue << endl; // 这句话会报错
//应该在demo1类里头定义一个方法去访问父类的变量
d1.display();
return 0;
} d1虽然是Demo1的实例,即Demo的子类实例,但是d1调用provalue的地方(main函数)不是在Demo1类里面,所以不行。
页:
[1]