首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++中的一个小疑点

2012-02-27 
c++中的一个小问题我写了一个很简单的小程序,但是其中有几处不解之处,请高手指点:#includeiostream.hcla

c++中的一个小问题
我写了一个很简单的小程序,但是其中有几处不解之处,请高手指点:
#include<iostream.h>
class base
{
protected: //如果此处改成private将会是错误的,为什么??
int x;
public:
base(int a)
{
x=a;
}
void who()
{
cout<<"base"<<x<<endl;
}
};
class derive1:public base
{
public:
derive1(int a):base(a) //此处的构造函数是怎么赋值的???
{
}
void who()
{
cout<<"derive1"<<x<<endl;
}

};
class derive2:public base
{
public:
derive2(int a):base(a)
{

}
void who()
{
cout<<"derive2"<<x<<endl;
}
};
void main()
{
base *p;
base obj(1);
derive1 obj1(2);
derive2 obj2(3);
p=&obj;
p->who(); //为什么以下的三个输出都是输出base的成员函数???
p=&obj1;
p->who();
p=&obj2;
p->who();
}

[解决办法]
protected: //如果此处改成private将会是错误的,为什么?? 
如果是私有的,则子类不能访问变量x

derive1(int a):base(a) //此处的构造函数是怎么赋值的??? 
子类在构造时,先调用父类的构造函数

p->who(); //为什么以下的三个输出都是输出base的成员函数??? 
父类的who函数不是虚的
[解决办法]
1)派生类只能访问public 和 protected成员
2)派生类构造的时候先构造基类
3)who函数不是virtual的,不具有多态

热点排行