c++的继承问题

[复制链接]
查看11 | 回复0 | 2009-12-4 22:18:47 | 显示全部楼层 |阅读模式
改后的代码供你参考:#include using namespace std;class B{public: B(); B(int i); ~B();void print() const;private : int b;};B::B(){ b=0; cout<<"B's default constructor called."<<endl;}B::B(int i){ b=i; cout<<"B's construnctor called."<<endl;}B::~B(){ cout<<"B's destructor called."<<endl;}void B::print() const{ cout<<b<<endl;}class C:public B{public : C(); ~C(); C(int i,int j); void print() const;private : int c;};C::C(){ c=0; cout<<"C's default constructr called."<<endl;}C::C(int i,int j):B(i){ c=j; cout<<"C's constructor called."<<endl;}C::~C(){ cout<<"C's destructor called."<<endl;}void C::print() const{ B::print(); cout<<c<<endl;} main(){ C obj(5,6); obj.print();}在C类中你没有声明 ~C()这个析构函数,但是你却在类外进行了定义。 所谓“常”即不可变。常对象初始化后其数据成员值就确定了,期间不可以被更改,使其受到保护。如果它可以调用非常成员函数,那么非常成员函数有可以更改数据成员的值,使用常对象也就没有了任何意义,而常成员函数是不可以更改数据成员的数据,所以常对象只能调用常成员函数。而非常对象可以调用非常成员函数也可调用常成员函数,也就是说常成员函数是可以被非常对象调用的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行