关于对象的引用作为参数,可以直接访问私有成员的问题
生活随笔
收集整理的這篇文章主要介紹了
关于对象的引用作为参数,可以直接访问私有成员的问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#include
using namespace std;
class CPoint
{
public:CPoint(int xx, int yy){x = xx;y = yy;}CPoint(const CPoint &p){x = p.x;y = p.y;}
private:int x, y;
};
? ? ? ?首先,我們來看一個例子,在CPoint這個類中定義了兩個構(gòu)造函數(shù),第一個為普通的構(gòu)造函數(shù),第二個為拷貝構(gòu)造函數(shù),在拷貝構(gòu)造函數(shù)中通過p.x來訪問被引用的對象p的私有數(shù)據(jù)成員x和y,這個例子可能會讓很多人有疑惑,你可能會想為什么拷貝構(gòu)造函數(shù)的參數(shù)可以直接去訪問它自己的私有成員?那這個例子到底是錯的還是對的呢
?
? ? ? ?答案是對的,我們得明白C++的限定符是限定類的,不是限定對象的,只要是類型相同就能相互訪問。兩個是同類型的,因此可以直接訪問,但是需要指定一下是哪個對象。所?謂訪問權(quán)限(如public,private),是對“類”來說的,不是對“對象”來說的,private訪問權(quán)限是其它類不能訪問,而非這個類的不同對?象不能訪問。
?
? ? ? ?結(jié)論,拷貝構(gòu)造函數(shù)本來就是用來把兩個相同類的對象賦值而已,那么被賦值的對象的類肯定和用來賦值的對象是一個類,所以在拷貝構(gòu)造函數(shù)里面這樣用,一點問題也沒有!
總結(jié)
以上是生活随笔為你收集整理的关于对象的引用作为参数,可以直接访问私有成员的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不是说js不需要编译吗,那‘ES6模块是
- 下一篇: 树莓派第一次开机自动连接WIFI(不用显