#2
rjsp2023-04-21 14:35
|
程序代码:
#include <iostream>
#include <cstring>
using std::cout;
using std::endl;
class A
{
protected:
int n;
public:
A() {n = 10;}
void show()
{
cout << n << endl;
}
};
class B : public A
{
public:
void showb()
{
cout << n << endl;
}
};
class C : public A
{
public:
void setn()
{
n = 100;
}
};
int main()
{
A a;
B b;
C c;
b.showb();//显示基类A中的n没毛病
c.setn();//通过类C重新设置A中的n为100
b.show();//按理说这里应该是100
a.show();//这里也应该是100
//但实际上其它从A类派生来的全都没有改变,只改变了C中的n
//难道派生类不共享基类保护型成员数据吗
return 0;
}
#include <cstring>
using std::cout;
using std::endl;
class A
{
protected:
int n;
public:
A() {n = 10;}
void show()
{
cout << n << endl;
}
};
class B : public A
{
public:
void showb()
{
cout << n << endl;
}
};
class C : public A
{
public:
void setn()
{
n = 100;
}
};
int main()
{
A a;
B b;
C c;
b.showb();//显示基类A中的n没毛病
c.setn();//通过类C重新设置A中的n为100
b.show();//按理说这里应该是100
a.show();//这里也应该是100
//但实际上其它从A类派生来的全都没有改变,只改变了C中的n
//难道派生类不共享基类保护型成员数据吗
return 0;
}