关闭

public,protected,private问题

标签: stringclass2010
305人阅读 评论(0) 收藏 举报
分类:

一直没扯清这几个访问限定符,这次用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.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:75148次
    • 积分:953
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:21篇
    • 译文:1篇
    • 评论:2条
    最新评论