1.C++ 關(guān)于類函數(shù)訪問同類對象的私有變量

一般理解類的私有成員變量不能通過對象直接進(jìn)行訪問,需要借助公有成員函數(shù)對其進(jìn)行相關(guān)的操作.但是有一類情況可以直接通過對象對私有成員變量進(jìn)行訪問.

class stock{

private:
   double total_val ;
public:
   stock(double num);
   stock  topval(stock s);
};

stock::stock(double num)
{
   total_val = num;
}
stock  stock::topval(stock  s)
{
   if (s.total_val > total_val)
       return s;
   else
       return *this;
}

int main()
{
   stock a(10), b(11),c(1);
   c = a.topval(b);
   return 0;
}

在if (s.total_val > total_val)中就直接使用對象s訪問了其私有成員變量total_val,原理為:

(1).封裝是編譯期的概念,是針對類型而非對象的,在類的成員函數(shù)中可以訪問同類型實(shí)例對象的私有成員變量.
(2).在編譯器遇到total_val變量時(shí),將會(huì)在其所屬對象s所屬的類域中查找該符號(hào),既然查找的是類域,由于topval函數(shù)屬于stock類,topval函數(shù)可以訪問stock類中的所有變量,所以topval函數(shù)可以找到s.total_val.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,628評論 18 399
  • C++文件 例:從文件income. in中讀入收入直到文件結(jié)束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 3,090評論 0 3
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,656評論 1 51
  • 一、接口 1.舉個(gè)例子,A想要去B的家里做客,當(dāng)然,A不能直接穿墻或瞬移進(jìn)入到B家里去訪問,他必須通過某種方式或渠...
    ZYiDa閱讀 839評論 0 0
  • 有時(shí)候墮落放縱和積極面對只差一個(gè)轉(zhuǎn)身…可往往比較容易選擇前者,因?yàn)槊鎸σ恍┳屪约和纯嗟氖虑榇_實(shí)不易,以為把自己灌醉...
    輕舞肥羊閱讀 235評論 0 0

友情鏈接更多精彩內(nèi)容