条款22:将成员变量声明为private
2012-09-10 15:27
92 查看
为什么不将成员变量声明为public呢?
1.如果变量都是private,那么用户只能通过函数来获得这个变量,而不用考虑“.”或者“->”后面的东西用不用加上“()”。
2.使用函数,可以对变量进行精确地控制:有的变量不许访问,有的只读,有的可以读写,甚至是可以“只写”。而且在函数中,可以处理用户输入的不合理的参数。
3.封装性。封装性意味着,当你有新的想法需要修改时,只需要改变函数内部的实现细节。只要函数的接口没有改变,那么所有使用这个函数的代码就不需要做改变。而假如你使用的数据,那么整个代码的修改量就会大很多。简而言之,public意味着不封装,所有public下的东西都是别人用的,你不能轻易修改它们。
而对于protected,前两点依然适用。而对于第三点,可以从另一个角度来说明:如果public变量被取消那么所有使用它的代码都会被取消。对于protected,则破坏的是他的派生类。这都是无法衡量的。而如果private变量被取消,我们只要修改本类中调用这个变量的函数就行了。
总而言之,变量应该声明为private。声明为protected不会比声明为public带来明显的改善
1.如果变量都是private,那么用户只能通过函数来获得这个变量,而不用考虑“.”或者“->”后面的东西用不用加上“()”。
2.使用函数,可以对变量进行精确地控制:有的变量不许访问,有的只读,有的可以读写,甚至是可以“只写”。而且在函数中,可以处理用户输入的不合理的参数。
3.封装性。封装性意味着,当你有新的想法需要修改时,只需要改变函数内部的实现细节。只要函数的接口没有改变,那么所有使用这个函数的代码就不需要做改变。而假如你使用的数据,那么整个代码的修改量就会大很多。简而言之,public意味着不封装,所有public下的东西都是别人用的,你不能轻易修改它们。
而对于protected,前两点依然适用。而对于第三点,可以从另一个角度来说明:如果public变量被取消那么所有使用它的代码都会被取消。对于protected,则破坏的是他的派生类。这都是无法衡量的。而如果private变量被取消,我们只要修改本类中调用这个变量的函数就行了。
总而言之,变量应该声明为private。声明为protected不会比声明为public带来明显的改善
相关文章推荐
- 条款22 将成员变量声明为private
- 《Effect C++》学习------条款22:将成员变量声明为private
- 《Effective C++》学习笔记条款22 将成员变量声明为private
- Effective C++ 条款22 将成员变量声明为private
- 条款22:将成员变量声明为private
- effective c++条款21,22,23(返回对象时,别妄想反回其引用,将成员变量声明为private,宁可拿非成员非友元函数替换成员函数(增强封装性))
- effective C++ 条款 22:将成员变量声明为private
- Effective C++:条款22:将成员变量声明为private
- 读书笔记《Effective c++》 条款22 将成员变量声明为private
- 条款22:将成员变量声明为private
- 条款22:将成员变量声明为private
- 条款22、将成员变量声明为private
- Effective C++:条款22:将成员变量声明为private
- 条款22:将成员变量声明为private(Declare data members private)
- 条款22:将成员变量声明为private
- 读书笔记《Effective C++》条款22:将成员变量声明为private
- 条款22:将成员变量声明为private
- Effective C++——》条款22:将成员变量声明为private
- 条款22:将成员变量声明为private
- 条款22:将成员变量声明为private