首页 > 其他 > 详细

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

时间:2019-11-24 15:21:34      阅读:70      评论:0      收藏:0      [点我收藏+]
 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成员的引用或指针或迭代器

原文:https://www.cnblogs.com/Royzzzzz/p/11922239.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!