public,protected,private问题

来源:互联网 发布:淘宝pv和uv下降的原因 编辑:程序博客网 时间:2024/06/06 14:12

一直没扯清这几个访问限定符,这次用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->pricestring temp = book;//error,虽然还是想访问this的基类部分,但是行不通!!!ret = d.price;//OK, 派生类通过派生类对象访问基类的protected成员temp = d.book;//errorret = b.price;//error, 派生类对基类对象的protected成员没有特殊访问权限。temp = b.book;//error}}

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

另外:

 

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

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

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

原创粉丝点击