5.条款二十八:在class内切勿让public成员函数返回private成员的引用或指针或迭代器

Posted Royzzzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.条款二十八:在class内切勿让public成员函数返回private成员的引用或指针或迭代器相关的知识,希望对你有一定的参考价值。

 1 class DoSomething {
 2 private:
 3     char * text;
 4     //...
 5 public:
 6     DoSomething():text(nullptr) {}
 7     //DoSomething(){text=nullptr;}
 8     char *& something() const{
 9         return text;
10     }
11 };

实际上,上面的代码是通不过编译的。因为const函数的属性被抛弃了。我们知道,const修饰的函数不可以改变函数内的成员,但是指针和引用却可以改变。于是乎二者是矛盾的。如果可以这样做,我们在一些不允许用户修改私有成员的接口种却给了用户修改的机会,

这样对封装性和类的损害是巨大的。

以上是关于5.条款二十八:在class内切勿让public成员函数返回private成员的引用或指针或迭代器的主要内容,如果未能解决你的问题,请参考以下文章

Python之第二十八天的努力--collections模块

学习笔记第二十八节课

第二十八天

剑指offer(二十八)之丑数

读书笔记_Effective_C++_条款二十五: 考虑写出一个不抛出异常的swap函数

一起Talk Android吧(第四百二十八回:在Android中使用MQTT通信二)