学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
生活随笔
收集整理的這篇文章主要介紹了
学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
直接上代碼吧
大致就是這樣,主要考慮拷貝構造函數(shù)vectorList(const vectorList<T> & rhs);該函數(shù)的定義如下:
template<class T> vectorList<T>::vectorList(const vectorList<T>& rhs) : element(vector<T>(rhs.vectorLength)), vectorLength(rhs.vectorLength), listSize(rhs.listSize) { copy(rhs.element.begin(), rhs.element.end(), element); }
顯然,在這個成員函數(shù)中rhs直接訪問了自身的私有成員vectorLength和listSize
而如果在main.cpp里也這樣調用的話就是錯的
vectorList<int> vec(2); cout << vec.vectorLength << endl; 錯誤:編譯器會提示沒有訪問權限查了一些資料發(fā)現(xiàn)
1:與C++機制有關,是C++特殊規(guī)定的操作,因為類是設計者自己設計的,設計者完全知道類內部的組成,不需要對設計者隱藏。而使用者即用戶不知道類的內部結構,所以分出Public,protected,和private.而且不能再main中調用
2:訪問限定符public,protected,private是對其他的類和其他的操作而言的,即如果兩個對象屬于一個類:上述rhs和*this,在其中一個對象的成員函數(shù)中是可以直接調用另一個對象的私有或者保護成員的
3:因為類的接口與封裝已經(jīng)是安全的(對外不可見的),所以在類內部這樣使用是不存在不安全問題的
4:如果沒有這一機制,則上述拷貝構造函數(shù)的初始化就需要在類內增加一些成員函數(shù)來返回私有或者保護成員。
總結
以上是生活随笔為你收集整理的学习笔记-----关于C++中类的成员函数可以访问私有成员的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记-----关于VS中使用模板类出
- 下一篇: 学习笔记-----C++模板类中友元函数