public,protected,private问题

本文深入探讨了C++中类继承中的访问限定符,通过实例演示了公有继承、保护继承和私有继承的区别,并详细解释了派生类如何访问基类的protected和private成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直没扯清这几个访问限定符,这次用vs2010下用代码实验下,记录如下:

class Base{
public:
	Base(string book_a = " ", double price_a = 0.0): book(book_a), price(price_a) {}
protected:
	double price;
private:
	string book;
}


class Drived: public Base{
public:
	Drived(string book_a = " ", double price_a = 0.0):Base(book_a, price_a) {}

	void memfcn(const Drived &d, const Base &b)
	{
		double ret = price;	//OK,使用的是this->price
		string temp = book;	//error,虽然还是想访问this的基类部分,但是行不通!!!

		ret = d.price;		//OK, 派生类通过派生类对象访问基类的protected成员
		temp = d.book;	//error

		ret = b.price;	//error, 派生类对基类对象的protected成员没有特殊访问权限。
		temp = b.book;	//error
	}
}

注意:将基类与派生类区别开来,尽管对于派生类对象,它也具有基类成分。

另外:

 

公有继承:基类保持自己的访问级别。

保护继承:基类的public和protected成员在派生类中为protected.

私有继承:基类所有成员在派生类中为private.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值