[問題] 為何外部傳Object 可讀其Object private值

作者: joejoe14758 (KILE)   2020-05-16 10:43:01
開發平台(Platform): (Ex: Win10, Linux, ...)
Mac
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
問題(Question):
#include<iostream>
using namespace std;
class Complex
{
private:
int value ;
public :
Complex(int value =0)
{
this->value = value ;
}
void show()
{
cout << this->value << endl ;
}
Complex add(Complex c1)
{
Complex temp ;
temp.value = this->value + c1.value ;
return temp;
}
};
int main()
{
Complex a(1), b(2) ;
a.show() ;
Complex c = a.add(b) ;
c.show() ;
}
//程式碼結束
作者: Lipraxde (Lipraxde)   2020-05-16 10:51:00
https://bit.ly/2WZnPM2 ,你用的是 Inside 的寫法哦~你是問另一個問題XDhttps://bit.ly/2Ayx0eM ,這個有比較接近你想問的?
作者: joejoe14758 (KILE)   2020-05-16 11:14:00
謝謝 我研究一下
作者: steak5566 (牛排56)   2020-05-16 13:57:00
相同class的object 互為friend
作者: protoss (天生散人)   2020-05-16 17:28:00
c1.value那時在member function的scope裏頭可以存取private...好吧~其實我也不知道...只是以前看書我給的解釋...
作者: steve1012 (steve)   2020-05-16 17:48:00
同一個class可以存取private value你可以簡單想成 同個class的人知道如何使用這個value所以可以用
作者: kobe8112 (小B)   2020-05-16 18:24:00
我記得存取修飾字是以類別為基礎進行判斷,不是以物件
作者: Lipraxde (Lipraxde)   2020-05-17 13:06:00
你有糾結在是不是同 object 上嗎?
作者: lylu (理路)   2020-05-17 23:43:00
作者: Lipraxde (Lipraxde)   2020-05-18 21:24:00
提問裡認為兩個不同的物件有不同的 scope 是有誤的, a和 b 並不會有什麼自己的 scope。後面的結論沒有糾正這點,而是順著回答,所以我不太確定你實際上理解的。
作者: protoss (天生散人)   2020-05-18 22:35:00
一開始都會因為是兩個不同的object所以以為都是從外部存取...但仔細看一下那function是member function...所其以實也還是在class裏頭...不過他也找到答案了...其實很優秀了...一定也有人就這樣看過去了...也有不少人根本從沒看到這過...

Links booklink

Contact Us: admin [ a t ] ucptt.com