C++ 将成员变量声明为private
2018-03-21 09:28
337 查看
20180313 C++ 将成员变量声明为private
封装的重要性毋庸置疑,如果你对客户隐藏成员变量(也就是封装它们),你可以确保class的约束条件总是会获得维护,因为只有成员函数可以影响它们。更进一步地说,你保留了日后变更实现的权利,如果你不隐藏它们,你很快会发现即使拥有class原始码,改变任何public事物的能力还是极端受到约束,因为那会破坏太多客户码。public意味不封装,而几乎可以说,不封装意味不可改变,特别是对被广泛使用的classes而言。被广泛使用的classes是最需要封装的一个族群,因为他们最能够从“改变采用一个较佳实现版本”中获益。protected成员变量的论点十分类似。实际上它和public成员变量的论点相同。
假设我们有一个public成员变量,而我们最终取消了它。多少代码可能会被破坏呢,是的所有使用它的客户码都会被破坏,而那时不可知的大量。因此public成员变量完全没有封装性,。假设我们有一个protected成员变量而我们最终取消了它,有多少代码被破坏,是的,所有使用它的derived classes都会被破坏,那往往也是个 不可知的大量。因此,protected成员变量就像public成员变量一样缺乏封装性,因为在这两种情况下,如果成员变量被改变,都会有不可预知的大量代码收到破坏,虽然这个结论有点违反直观,但经验丰富的程序库作者会告诉你,它是真的,一旦你将一个成员变量声明为public或protected而用户开始使用它,就很难改变那个成员变量所涉及的一切。太多代码需要重写、重新测试、重写编写文档、重新编译、。从封装的角度看,其实只有两种访问权限:private(提供封装)和其他(不提供封装)。
封装的重要性毋庸置疑,如果你对客户隐藏成员变量(也就是封装它们),你可以确保class的约束条件总是会获得维护,因为只有成员函数可以影响它们。更进一步地说,你保留了日后变更实现的权利,如果你不隐藏它们,你很快会发现即使拥有class原始码,改变任何public事物的能力还是极端受到约束,因为那会破坏太多客户码。public意味不封装,而几乎可以说,不封装意味不可改变,特别是对被广泛使用的classes而言。被广泛使用的classes是最需要封装的一个族群,因为他们最能够从“改变采用一个较佳实现版本”中获益。protected成员变量的论点十分类似。实际上它和public成员变量的论点相同。
假设我们有一个public成员变量,而我们最终取消了它。多少代码可能会被破坏呢,是的所有使用它的客户码都会被破坏,而那时不可知的大量。因此public成员变量完全没有封装性,。假设我们有一个protected成员变量而我们最终取消了它,有多少代码被破坏,是的,所有使用它的derived classes都会被破坏,那往往也是个 不可知的大量。因此,protected成员变量就像public成员变量一样缺乏封装性,因为在这两种情况下,如果成员变量被改变,都会有不可预知的大量代码收到破坏,虽然这个结论有点违反直观,但经验丰富的程序库作者会告诉你,它是真的,一旦你将一个成员变量声明为public或protected而用户开始使用它,就很难改变那个成员变量所涉及的一切。太多代码需要重写、重新测试、重写编写文档、重新编译、。从封装的角度看,其实只有两种访问权限:private(提供封装)和其他(不提供封装)。
相关文章推荐
- C++之将成员变量声明为private(22)---《Effective C++》
- Effective C++ rule 22.类成员变量尽量声明为private
- Effective C++ Item 22 将成员变量声明为private
- Effective C++——》条款22:将成员变量声明为private
- 将成员变量声明为private和用非成员、非友友提高封装性(Effective C++_22、23))
- 读书笔记_Effective_C++_条款二十二:将成员变量声明为private
- 条款22:将成员变量声明为private(Declare data members private)
- Effective C++ (E3 22、23)笔记之成员变量声明为private、以非成员非友元函数替代成员函数
- c++ 变量声明: 成员函数指针 成员变量指针
- C++中成员变量默认private
- [C++] 关于子类声明与父类同名同类型的成员变量的问题
- effective c++ 将成员变量声明为private
- 条款22:将成员变量声明为private
- C++ - 类的成员变量 声明顺序 与 初始化顺序 相同
- C++如何声明类成员函数指针或类成员变量指针(A::*)
- Item1:Declare data members private--将所有成员变量声明为private
- var this.value 可在任意地方 声明 类成员变量。如果可以利用在C++ 那该有多好啊
- 条款22:将成员变量声明为private
- C/C++基础之:类成员变量的修饰public/private/protected的区别
- C++ private成员变量作用域的扩展