[问题] 为何外部传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