C++ protected权限成员以及类和结构体区别

简介: 我们已经知道在C++类中默认的访问权限是private,在C++结构体中默认的访问权限是public 其实在C++中类和结构体没有严格的界限,区别如上。 那么这里说明一下protected权限。
我们已经知道在C++类中默认的访问权限是private,在C++结构体中默认的访问权限是public
其实在C++中类和结构体没有严格的界限,区别如上。
那么这里说明一下protected权限。
这个protected访问权限只是说明外部调用函数不能直接调用类成员,但是继承类确能够直接访问。
我们知道基类的private成员继承类不能直接调用,必须通过public方法进行调用,
这里又多了一项可以继承类可以通过protected方法进行调用


如下
class normalu
{
        private:
                string name;
                unsigned int id;
                char* password;
        public:
                unsigned int pri;
                normalu(string username,unsigned int uid,unsigned int upri,const char* upass):name(username),id(uid),pri(upri)
        {
                password = new char[strlen(upass)+1];
                strcpy(password,upass);
        }
                normalu(const normalu& innor);
                virtual ~normalu();
                void show()
                {
                        cout<<"name:"<<name<<endl;
                        cout<<"id:"<<id<<endl;
                }
                virtual void checkpri(void)
                {
                        if(pri>5)
                        {
                                cout<<"User Is Normal User!\n";
                                show();
                                exit(0);
                        }
                        else
                        {
                                cout<<"User Is Not Normal User!\n";
                                show();
                                cout<<"User Is Only register user!\n";
                        }
                }
};
我们可以修改一下
class normalu
{
        private:
                string name;
                unsigned int id;
                char* password;
        protected:                            //将pri和show()函数作为保护权限成员保证外部不能调用更加合适
                unsigned int pri;
                void show()
                {
                        cout<<"name:"<<name<<endl;
                        cout<<"id:"<<id<<endl;
                }


        public:
                normalu(string username,unsigned int uid,unsigned int upri,const char* upass):name(username),id(uid),pri(upri)
        {
                password = new char[strlen(upass)+1];
                strcpy(password,upass);
        }
                normalu(const normalu& innor);
                virtual ~normalu();
                virtual void checkpri(void)
                {
                        if(pri>5)
                        {
                                cout<<"User Is Normal User!\n";
                                show();
                                exit(0);
                        }
                        else
                        {
                                cout<<"User Is Not Normal User!\n";
                                show();
                                cout<<"User Is Only register user!\n";
                        }
                }
};


将pri和show()函数作为保护权限成员保证外部不能调用更加合适。
在没有其他什么需要说明的了
相关文章
|
15天前
|
编译器 C++
C++ 类构造函数初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。
60 30
|
4天前
|
并行计算 Unix Linux
超级好用的C++实用库之线程基类
超级好用的C++实用库之线程基类
12 4
|
8天前
|
存储 算法 C++
【C++核心】结构体、共用体详解
这篇文章详细讲解了C++中结构体和共用体的概念、定义、使用场景和案例,包括结构体的创建、数组、指针、嵌套、函数参数传递,以及共用体的特点和应用实例。
15 4
|
4天前
|
C++
继续更新完善:C++ 结构体代码转MASM32代码
继续更新完善:C++ 结构体代码转MASM32代码
|
4天前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
|
4天前
|
C++
2合1,整合C++类(Class)代码转换为MASM32代码的平台
2合1,整合C++类(Class)代码转换为MASM32代码的平台
|
4天前
|
存储 运维 监控
超级好用的C++实用库之日志类
超级好用的C++实用库之日志类
10 0
|
29天前
|
C++
C++(十六)类之间转化
在C++中,类之间的转换可以通过转换构造函数和操作符函数实现。转换构造函数是一种单参数构造函数,用于将其他类型转换为本类类型。为了防止不必要的隐式转换,可以使用`explicit`关键字来禁止这种自动转换。此外,还可以通过定义`operator`函数来进行类型转换,该函数无参数且无返回值。下面展示了如何使用这两种方式实现自定义类型的相互转换,并通过示例代码说明了`explicit`关键字的作用。
|
1月前
|
存储 编译器 C++
C ++初阶:类和对象(中)
C ++初阶:类和对象(中)
|
2月前
|
存储 安全 编译器
【C++】类和对象(下)
【C++】类和对象(下)
【C++】类和对象(下)