#include
class A{
private:
int x;
public:
A(){}
A(int i){x=i;cout<<"this is A construction\n";}
~A(){cout<<"this is A destruction\n";}
void setvaluea(int i){x=i;}
void disp(){cout<<"x="<<x<<endl;}
};
class B:public A//公有继承
{
private:
int y;
public:
A::setvaluea;//恢复基类成员的访问权限
A::disp;
B(){}
B(int i):A(i+10){y=i;cout<<"this is B
construction\n";}
~B(){cout<<"this is B destruction\n";}
void setvalueb(int i){y=i;};
void
disp(){A::disp();cout<<"y="<<y<<endl;}//同名,重定义了基类的成员函数
};
int main()
{
//派生类对象能赋值给基类对象(需公有继承)
//基类指针指向一个派生类对象
//将派生类指针强制转换基类对象
B *b;
A a(3);
b=static_cast(&a);
b->disp();//可调用基类成员
return 0;
}

799

被折叠的 条评论
为什么被折叠?



