首页
社区
课程
招聘
[旧帖] [求助]c++基础问题 0.00雪花
发表于: 2011-3-31 12:35 1345

[旧帖] [求助]c++基础问题 0.00雪花

2011-3-31 12:35
1345
#include <iostream.h>
class cls
{
        public:
                void print1()
                {
                        cout<<"public"<<endl;
                }
        protected:
                void print2()
                {
                        cout<<"protected"<<endl;
                }
        private:
                void print3()
                {
                        cout<<"private"<<endl;
                }
};
void main()
{
        cls a;
        a.print1();
        //a.print2();
        //a.print3();
        cin.get();
}

以上是代码,print2()与get()都是protected级别,为什么get()可以被调用,而print2()不能?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 1149
活跃值: (833)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
2
继承访问。。。
2011-3-31 13:00
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个请大牛吧!
2011-3-31 16:23
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
protected的不能直接被外部调用,可以在类里面创建一个public的函数,来调用print2()
2011-3-31 16:33
0
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哈哈,这个会不会是走后门的哦?
2011-3-31 17:01
0
雪    币: 4
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
get()前边有黄色的钥匙也是protected,为什么会被外部调用啊
2011-3-31 18:39
0
雪    币: 1149
活跃值: (833)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
7
#include <iostream>
using namespace std ;
class cls
{
public:
        void print1()
        {
                cout<<"public"<<endl;
        }
protected:
        void print2()
        {
                cout<<"protected"<<endl;
        }
private:
        void print3()
        {
                cout<<"private"<<endl;
        }
};

class cls1 :public cls
{
public:
        void print4()
        {
                print2();
        }
       
};
void main()
{
        cls a;
        cls1 b;
        a.print1();
        b.print4();

}

派生类成员访问。。或者 基类成员函数访问。。。或友元函数。。
2011-3-31 21:09
0
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
cin的get是public的
2011-3-31 21:20
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
cin的get是public的
2011-4-2 17:45
0
雪    币: 63
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
get是cin对象的一个公有成员函数,printf2是这个类的保护函数,当然不能访问。建议楼主看一下范磊的C++教材
2011-4-2 19:39
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
对C++刚开始研究。。
2011-4-2 19:42
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
以后会慢慢变得厉害的啦
2011-4-3 09:35
0
雪    币: 39
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
一个私有 一个保护 一个公有 私有只可以被基类及派生类使用 保护只能被基类使用
2011-4-3 09:47
0
雪    币: 7008
活跃值: (1040)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
受保护的成员好像是不能在外部调用的,楼主可以去看看他们之间的调用关系就明白了啊!
2011-4-3 12:01
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
//a.print2();
//不是表示注释吗?就算真能调用也没法用了啊。都没把//后面的当代码
2011-4-3 12:15
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
访问保护成员 需要继承 基类 才能被调用。当其它 函数调用此受保护的成员时。 你的接口需要提供相应的访问条件。
2011-4-3 14:25
0
雪    币: 39
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
17
这是正解。get方法不是你自己定义的,它包含在iostream.h头文件里,你当然可以正常调用了。
而你自己定义的protect方法,既然是保护,在外部那当然无法调用了。
2011-4-3 15:45
0
游客
登录 | 注册 方可回帖
返回
//