關於protected access label

來源:互聯網
上載者:User

      在c++ primer 4th版476頁有關於衍生類別對基類protected成員存取權限的例子

void Bulk_item::memfcn(const Bulk_item &d,const Item_base &b){double ret=price;ret = d.price;ret = b.price;}

       其中double ret=price毫無疑問正確,因為Bulk_item從基類Item_base中公有繼承了protected成員price,成為Bulk_item類的protected成員,因而可在Bulk_item類的範圍中直接使用price。

       而ret=b.price也是明顯錯誤的,類的private成員除了類的範圍內部和友元可以直接使用外,其他任何的方不可訪問。

       ret = d.price是正確的,感覺讓人不明所以,書上解釋也是一筆帶過。

      通過在g++中實驗中發現

      類的成員函數對該類對象的protected成員具有特殊訪問權。

     在類的成員函數中可以通過該類類型對象、引用或指標通過成員訪問操作符訪問該類對象的protected成員。

    

#include <iostream>class A {public:A():i(5){}int  getprice(const A &a){A b;A *c=new A();return a.i+b.i+c->i;}protected:int i;};int main(void){return 0;}

 

複製搜尋

複製搜尋

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.