记C++类成员访问权限符二三事

1、对于虚拟函数,子类里的成员访问权限符可以和父类不同。即对于基类的函数func如果是public的,子类中它可以是private的。

class Base  
{
public:
	Base();
	virtual ~Base();

public:
	virtual void func(void); // 公有

};

class Derived : public Base  
{
public:
	Derived();
	virtual ~Derived();

private:
	void func(void);  // 私有,和父类不同

};

	Base * pB = new Base();
	pB->func();

	pB = new Derived();
	pB->func();       // 正常访问

	Derived * pD = new Derived();
//	pD->func();  不能访问

2、“存取限制”不能解除“因多继承而得的members”的模棱两可的状态。原因:改变某个class member的可存取性,绝不应该连带改变程序的意义。

class Base1 {
public:
    int doIt();
};

class Base2 {
private:
    int doIt(); // 不管这里是public,protected还是private,都会产生模棱两可
}

class Derived: public Base1, public Base2 {
}

Derived d;
int i = d.doIt(); // 错误,模棱两可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值