0.编程规范
- 类名首字母大写
- 数据项通常私有,成员函数通常共有
- 类对象默认访问控制为private
- 类实现与类声明可以分开放在不同文件
- 数据成员名中使用m_前缀或者——后缀
1.过程性编程与面向对象编程
前者:首先考虑要遵循的步骤,然后考虑如何表示这些数据 后者:首先考虑数据,以及如何使用数据——描述对象所需数据以及描述用户与数据交互所需的操作(接口)——再确定如何实现接口和数据存储
2.类规范
2.0 类声明与类方法定义
void 类名::函数名()
2 )可以访问类的private组件
2.1 私有成员函数
- 私有成员函数存在的意义——避免冗余代码
- 私有成员函数——仅供当前类的其他私有成员函数以及公有函数调用
- 在设计与实现一个类时——优先设计类的私有成员函数——依赖于该私有成员函数的其他函数
- 对私有成员变量而言,即是除了当前所属类,其他类无权访问,哪怕是其子类尽管持有该成员。
2.2 对象的存储
- 每个新对象都有自己的存储空间——存储内部变量与类成员
- 同一个类的所有对象共享同一组类方法(每种方法只有一个副本)
3.构造函数与析构函数
3.1 构造函数
特征:
声明与定义
使用
- 显式 (指出析构函数名字)
- 隐式(省略)
- 程序声明对象时,自动调用析构函数
- 对象无法调用析构函数(构造函数是用来创建对象的)
3.1.1 默认构造函数
只有在没有定义任何构造函数时,编译器才会提供,否则声明时没有构造函数会出错——目的——禁止创建未初始化的对象
定义默认构造函数的方式
- 给已构函数的所有参数提供默认值
- 函数重载——一个没有参数的构造函数
Stock stock1; 注意没有括号
Stock stock2(); 表示这是一个函数
但是只要能有一个默认构造函数
3.2 析构函数
原型
~类名();
定义:
类名::~类名(
{
)
使用时机:通常不该在代码中显示调用析构函数
如果构造函数使用了new,则必须提供使用delete的析构函数
4.this指针
指向用来调用成员函数的对象(this被作为隐藏参数传递给方法) 每个成员函数都有也给this 指针 如果需要调用整个对象,使用*this,在函数的括号后面使用const将this限定可以防止修改
const Stock & Stock::topval(const Stock & s) const
{
if(s.total_val >total_val)
return s;
else
return *this;
}
5.对象数组 ?
6.类作用域?
7.抽象数据类型?
|