effective c++ 将成员变量声明为private
2015-11-02 13:07
302 查看
一旦你将一个成员变量声明为public或protected而用户开始使用它,就很难改变那个成员变量所涉及的一切。如果改变:太多代码需要重写,重新测试,重新编写文档,重新编译
引用csqlwy
protected并不比public更具有封装性
昨天写可视化作业,写了个小程序处理数据,一点小错改了好久,总结一下:
1.犯了错,不应该立刻去盲目查错,停下来,想一分钟再动手
2.每写一部分,比如一个循环,都仔细想想再动手
#include<iostream> using namespace std; ////////////////////////////////////////////////////////////////////////// class A //父类 { private: int privatedateA; protected: int protecteddateA; public: int publicdateA; }; ////////////////////////////////////////////////////////////////////////// class B :public A //基类A的派生类B(共有继承) { public: void funct() { int b; ///b=privatedateA; //error:基类中私有成员在派生类中是不可见的 b=protecteddateA; //ok:基类的保护成员在派生类中为保护成员 b=publicdateA; //ok:基类的公共成员在派生类中为公共成员 } }; ////////////////////////////////////////////////////////////////////////// class C :private A //基类A的派生类C(私有继承) { public: void funct() { int c; ///c=privatedateA; //error:基类中私有成员在派生类中是不可见的 c=protecteddateA; //ok:基类的保护成员在派生类中为私有成员 c=publicdateA; //ok:基类的公共成员在派生类中为私有成员 } }; ////////////////////////////////////////////////////////////////////////// class D :protected A //基类A的派生类D(保护继承) { public: void funct() { int d; ///d=privatedateA; //error:基类中私有成员在派生类中是不可见的 d=protecteddateA; //ok:基类的保护成员在派生类中为保护成员 d=publicdateA; //ok:基类的公共成员在派生类中为保护成员 } }; ////////////////////////////////////////////////////////////////////////// int main() { int a; B objB; ///a=objB.privatedateA; //error:基类中私有成员在派生类中是不可见的,对对象不可见 ///a=objB.protecteddateA; //error:基类的保护成员在派生类中为保护成员,对对象不可见 a=objB.publicdateA; //ok:基类的公共成员在派生类中为公共成员,对对象可见 C objC; ///a=objC.privatedateA; //error:基类中私有成员在派生类中是不可见的,对对象不可见 ///a=objC.protecteddateA; //error:基类的保护成员在派生类中为私有成员,对对象不可见 ///a=objC.publicdateA; //error:基类的公共成员在派生类中为私有成员,对对象不可见 D objD; ///a=objD.privatedateA; //error:基类中私有成员在派生类中是不可见的,对对象不可见 ///a=objD.protecteddateA; //error:基类的保护成员在派生类中为保护成员,对对象不可见 ///a=objD.publicdateA; //error:基类的公共成员在派生类中为保护成员,对对象不可见 return 0; }
引用csqlwy
protected并不比public更具有封装性
昨天写可视化作业,写了个小程序处理数据,一点小错改了好久,总结一下:
1.犯了错,不应该立刻去盲目查错,停下来,想一分钟再动手
2.每写一部分,比如一个循环,都仔细想想再动手
相关文章推荐
- Android之使用Http协议实现文件上传功能
- 神器SystemTap
- Python 七步捉虫法
- mysql集群之MMM简单搭建
- 通晓网络测试常用命令
- Lua编程示例(一):select、debug、可变参数、table操作、error
- C#中的两种debug方法介绍
- 用Ruby实现一个单元测试框架的教程
- 自己简单封装的一个CDialog类实例
- Nodejs学习笔记之测试驱动
- PHP类的封装与继承详解
- javascript封装简单实现方法
- 封装好的一个万能检测表单的方法
- jquery datatable后台封装数据示例代码
- c#基础学习之封装
- js调试工具 Javascript Debug Toolkit 2.0.0版本发布
- 纯JavaScript实现的兼容各浏览器的添加和移除事件封装
- PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
- php debug 安装技巧
- 可以测试javascript运行效果的代码