首页新闻招聘找找看知识库

c++protected成员问题

0
悬赏园豆:5 [待解决问题]

c++基类protect成员。通过派生类对象实例能够访问吗?

还有在派生类的成员方法中,用派生类对象实例的引用或者指针,可以通过该引用或者指针访问基类的protected成员吗?c++primer476页是可以的

参见如下单代码

void Bulk_item::memfcn(const Bulk_item &d, const Item_base &b)
{
// attempt to use protected member
double ret = price; // ok: uses this->price
ret = d.price; // ok: uses price from a Bulk_item object
ret = b.price; // error: no access to price from an Item_base
}

我的理解是

1.派生类实例对象只能访问基类或自己的public成员

2.派生类里面可以访问基类的protected和publish成员。而且在改派生类里面,如果有改派生类的实例对象,则可以通过该实例对象访问基类的protected成员

以上理解有问题吗?欢迎c++大神解答一下

beautifulday的主页 beautifulday | 初学一级 | 园豆:196
提问于:2017-11-14 10:45
< >
分享
所有回答(1)
-1

无论是是否派生,类的实例对象都不能访问 private、protected 成员,只能访问 public 的。public 的成员就是类的“接口”。而在类的常用方法中可以直接访问基类的 protected 成员,通过参数传入的派生类实例对象的引用也可以访问,但通过传入的基类实例对象的引用不能访问。

你下面的理解是对的。

杰良 | 园豆:161 (初学一级) | 2017-11-14 12:25
   您需要登录以后才能回答,未注册用户请先注册