华为网站建设方案模板,超级外链工具源码,wordpress经典的主题,google 网站收录. 在C中#xff0c;返回指向对象内部成分的引用#xff08;handles#xff09;可能会导致封装性降低和对象空悬问题。为了避免這些问题#xff0c;可以通过返回const引用来限制对内部数据的修改#xff0c;从而确保只读访问
1、返回内部引用对象
下面代码中getData函数返…. 在C中返回指向对象内部成分的引用handles可能会导致封装性降低和对象空悬问题。为了避免這些问题可以通过返回const引用来限制对内部数据的修改从而确保只读访问
1、返回内部引用对象
下面代码中getData函数返回一个指向内部数据的引用外部代码通过这个引用可以直接修改data数据的内容破坏了对象封装性
#include iostream
#include vectorclass MyClass {
private:std::vectorint data;public:MyClass() : data{1, 2, 3, 4, 5} {}// 返回内部数据的引用std::vectorint getData() {return data;}
};int main() {MyClass obj;std::vectorint dataRef obj.getData();// 修改内部数据dataRef.push_back(6);// 打印内部数据for (int val : obj.getData()) {std::cout val ;}return 0;
}2、解决返回const引用
返回const引用外部代码就只能读取数据而不能修改
#include iostream
#include vectorclass MyClass {
private:std::vectorint data;public:MyClass() : data{1, 2, 3, 4, 5} {}// 返回内部数据的const引用const std::vectorint getData() const {return data;}
};int main() {MyClass obj;const std::vectorint dataRef obj.getData();// 尝试修改内部数据编译错误// dataRef.push_back(6); // 错误不能修改const对象// 打印内部数据for (int val : obj.getData()) {std::cout val ;}return 0;
}思维导图笔记