学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
来源:互联网 发布:淘宝店招尺寸1920 编辑:程序博客网 时间:2024/04/25 20:23
直接上代码吧
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;}
大致就是这样,主要考虑拷贝构造函数vectorList(const vectorList<T> & rhs);该函数的定义如下:
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);}
显然,在这个成员函数中rhs直接访问了自身的私有成员vectorLength和listSize
而如果在main.cpp里也这样调用的话就是错的
vectorList<int> vec(2);cout << vec.vectorLength << endl; 错误:编译器会提示没有访问权限
查了一些资料发现
1:与C++机制有关,是C++特殊规定的操作,因为类是设计者自己设计的,设计者完全知道类内部的组成,不需要对设计者隐藏。而使用者即用户不知道类的内部结构,所以分出Public,protected,和private.而且不能再main中调用
2:访问限定符public,protected,private是对其他的类和其他的操作而言的,即如果两个对象属于一个类:上述rhs和*this,在其中一个对象的成员函数中是可以直接调用另一个对象的私有或者保护成员的
3:因为类的接口与封装已经是安全的(对外不可见的),所以在类内部这样使用是不存在不安全问题的
4:如果没有这一机制,则上述拷贝构造函数的初始化就需要在类内增加一些成员函数来返回私有或者保护成员。
0 0
- 学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
- 关于类成员函数中访问同类对象的私有成员
- 关于类成员函数中访问同类对象的私有成员
- 关于类成员函数中访问同类对象的私有成员
- 关于类成员函数中访问同类对象的私有成员
- 关于类成员函数中访问同类对象的私有成员
- 关于类成员函数中访问同类对象的私有成员
- 学习笔记:私有成员的访问
- 类的成员函数中可以直接访问本类形参的私有变量
- 通过虚函数表 私有成员是可以访问的
- C/C++—— 除了用类成员函数访问类私有成员变量外,还可以通过类对象地址来直接访问和修改类的私有成员变量
- 访问类的私有成员
- 访问类的私有成员
- C++在类的成员函数中,允许直接访问该类的成员对象的私有成员变量
- C++在类的成员函数中,允许直接访问该类的成员对象的私有成员变量
- C++本类可以访问本身类的私有成员(即拷贝构造函数可以访问本身对象的私有成员)
- 嵌套类可以访问外围类的私有成员
- 外部类可以访问内部类的私有成员
- 使用swipe.js做幻灯片
- 第七周项目3(1)----c1的字符转换成c2的字符
- 平均形状-meanshape
- 68. Text Justification
- R语言简介
- 学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
- 扑克牌洗牌问题<用java写出算法:54张扑克,分成上下两等份有规律的洗牌,多少次可以返回初始值>
- 链队列实现病人排队看病
- 求次数
- 用 Octave 对音频文件进行基本数学的信号处理
- Windows多线程
- 数据库索引的作用
- URL(统一资源定位符)结构和注意事项
- 【STM32】STM32之SWD