继承的小问题

class A 

{

public:

A(int x):i(x) {}


void foo()

{

cout<<"A"<<endl;

}


protected:

int i;

};


class B : public A 

{

public:

B(int x, int y):A(x), i(y) {}


void foo()

{

cout<<"B"<<endl;

}


void display()

{

cout<<A::i + i<<endl;

}


private:

int i;

};



int main()

{

A a(10);

B b(100, 200);

a.foo();

b.foo();

b.A::foo();

b.display();

}


改程序的输出是A B A 300


说明:

1、如果基类声明了一个虚函数void foo()的话,在派生类中想覆盖这个函数的话必须定一个完全一摸一样的函数,包括返回值,才可以覆盖基类的虚函数。


2、如果基类声明了一个普通的成员函数(非虚函数)void foo(),在派生类同样声明一个一摸一样的函数void foo(), 则派生类的这个函数不覆盖基类饿同名函数,它们还是各归各的。

3、如果基类中声明可一个成员变量int i; 如果在派生类中声明一个完全同名的成员变量int i; 则派生类的i也不会覆盖基类的i,它们还是各归各的。

4、继承的时候,基类的私有成员无论何种继承方式下都不能被派生类访问,包括派生类的成员函数也不可以访问。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值