C++ protected許可權成員以及類和結構體區別

gaopengtttt發表於2016-08-10
我們已經知道在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()函式作為保護許可權成員保證外部不能呼叫更加合適。
在沒有其他什麼需要說明的了

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2123285/,如需轉載,請註明出處,否則將追究法律責任。

相關文章