标题:关于派生中的访问声明
取消只看楼主
Susurrant
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:22
专家分:52
注 册:2013-1-7
结帖率:50%
已结贴  问题点数:5 回复次数:2 
关于派生中的访问声明
假设为私有继承
我在很多地方都看到“访问声明不能改变类成员原来在基类中的成员性质,只能把原基类的保护成员调整为派生类的保护成员,原基类的公有成员调整为派生类的公有成员。”
但是明明在子类的public里可以对父类的protected成员使用访问声明啊?
也就是把父类的protected成员通过访问声明在子类中变为public
程序代码:
#include<iostream>
using namespace std;

class A
{
protected:
    int a;
public:
    A(int p):a(p){}
};

class B : private A
{
public:
    using A::a;   //访问声明,a在父类中为protected,私有继承
public:
    B(int p):A(p){}
};

int main()
{
    B C(1);
    cout << C.a << endl;
    return 0;
}


以上代码正常运行!!!
怎么回事??
搜索更多相关主题的帖子: public 声明 
2013-05-24 17:10
Susurrant
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:22
专家分:52
注 册:2013-1-7
得分:0 
回复 3楼 rjsp
在网上搜索这一句话时有不少资料(ppt,笔记等)里有这句话,老师的教材里也是。

@rjsp

effort ? succeed : retry ;
2013-05-26 12:29
Susurrant
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:22
专家分:52
注 册:2013-1-7
得分:0 
回复 5楼 ch137954447
不是不理解三个作用域,而是那句话和我实际编的函数有出入

effort ? succeed : retry ;
2013-05-27 15:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-407936-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.505619 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved