Chapter10 对象和类
C++中的类
要点:
- 定义位于类声明中的函数都将自动成为内联函数。
- 类的每个新对象都有独立的存储空间存储其内部变量和类成员,但共享同一组类方法。
类的构造函数和析构函数
构造函数
声明和定义构造函数
//example
Class Stock{
private:
std::string company;
long shares;
double share_val;
double total_val;
public:
Stock();
Stock(const string & co, long n, double pr);
}
为了避免构造函数参数名和成员参数名相同,一般选择在成员名中使用m_前缀,或者后缀_
使用构造函数
//显式调用
Stock food = Stock("world", 250, 1.25);
//隐式调用
Stock garment("Furry Mason", 50, 2.5);
//与new一起使用
Stock *pstock = new Stock("Electroshock", 18, 19.0);
默认构造函数
当且仅当没有定义任何构造函数时,编译器才会提供默认构造函数,否则就无法使用以下声明
Stock stock1;
定义默认构造函数
//给已有构造函数所有参数提供默认值
Stock(const string & co = "Error", long n = 0, double pr = 0);
//通过函数重载
Stock();
析构函数
原型
~Stock();
调用时间
- 对于静态存储类对象,将在程序结束时自动调用
- 对于自动存储类对象,将在代码块执行完时自动调用
- 对于自由存储类对象,将在delete释放内存时自动调用
this 指针
this指针指向用来调用成员函数的对象。
*this 返回时返回值为调用对象的引用。
参考书目 : C++ Primer Plus 第6版