C++ 封装不是万能的 private 数据成员的值可以在类外被访问
2011-10-02 22:11
417 查看
封装不是万能的别以为有了类的封装性,私有成员就可以高枕无忧。
甚至成员是常函数仍可以通过返回一个非常引用深入到对象内部。
结论:不要让成员函数返回一个非常引用(指针)。
#include <iostream> using namespace std; class A { int a; public: A(int aa):a(aa){} int & get() { return a; } void show() const { cout << "a = " << a << endl; } }; void main() { A obj(2); obj.show(); //修改了类的私有成员,结论:不要让成员函数返回一个非常引用(指针) obj.get() = 6; obj.show(); }
甚至成员是常函数仍可以通过返回一个非常引用深入到对象内部。
结论:不要让成员函数返回一个非常引用(指针)。
相关文章推荐
- 我的黑科技,让C++可以访问private成员
- C++中的private:类型相同的两个对象,是否可以访问对方的private成员?
- 我的黑科技,让C++可以访问private成员
- C++中类的访问权限针对的是类而不是对象!(为什么类中的函数可以访问对象的私有成员?)
- 在c++中,静态数据成员可以被非静态成员函数调用吗?如果可以调用的话那为什么还要定义静态成员函数呢
- C++中可以访问private的情况
- C语言中的static变量和C++静态数据成员 的访问情况
- 深度解析:C++传引用能否访问private成员?
- C++中访问类的私有数据成员的第三种方法
- c++中,同个类的不同实例可以相互访问对方的私有、保护成员
- 读书笔记 effective c++ Item 22 将数据成员声明成private
- 存储班长信息的学生类,将Stu类的数据成员的访问权限改为private,你的程序是否能完成要求的功能?如果不行,请修改程序。请不要修改给出的代码,只能修改自己写的代码。
- C++访问Redis的mset 二进制数据接口封装方案
- 【C/C++学习】error C2248: “CObject::CObject”: 无法访问 private 成员(在“CObject”类中声明)
- 学习笔记-----关于C++中类的成员函数可以访问私有成员的问题
- C++ public protected private成员访问权限解读
- C++数据的封装和类体内定义成员函数的学习笔记
- c++访问私有(private)成员变量的常用方法
- [c++]一个对MSXML的封装类 使用C++的Smart Pointer 对MSXML DOM封装,可以方便地访问xml文件
- 11周2-2项目 - 存储班长信息的学生类,将Stu类的数据成员的访问权限改为private,你的程序是否能完成要求的功能?如果不行,请修改程序。请不要修改给出的代码,只能修改自己写的代码。