日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

学习笔记-----关于C++中类的成员函数可以访问私有成员的问题

發(fā)布時間:2024/4/19 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记-----关于C++中类的成员函数可以访问私有成员的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

直接上代碼吧


template<class T> class vectorList : public linearList<T> { public: vectorList(size_t initCapacity = 10); vectorList(const vectorList<T> & rhs); ~vectorList(); ...... protected: void checkIndex(size_t theIndex); vector<T> element; size_t vectorLength; size_t listSize; }

大致就是這樣,主要考慮拷貝構造函數(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++中类的成员函数可以访问私有成员的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。