public,protected,private问题

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

阅读更多
文章标签: string class 2010
个人分类: C/C++
上一篇i++,++i, i=i+1 vs编译器上的深入研究
下一篇Hadoop0.20更新笔记
想对作者说点什么? 我来说一句

java 面试题

2012年04月25日 11KB 下载

Java访问修饰符

2013年09月23日 55KB 下载

OC访问变量权限

2013年12月20日 73KB 下载

没有更多推荐了,返回首页

关闭
关闭