C++ Primer Plus Chapter10

Chapter10 对象和类

C++中的类

要点:

  1. 定义位于类声明中的函数都将自动成为内联函数。
  2. 类的每个新对象都有独立的存储空间存储其内部变量和类成员,但共享同一组类方法。

类的构造函数和析构函数

构造函数

声明和定义构造函数

//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();

调用时间

  1. 对于静态存储类对象,将在程序结束时自动调用
  2. 对于自动存储类对象,将在代码块执行完时自动调用
  3. 对于自由存储类对象,将在delete释放内存时自动调用

this 指针

this指针指向用来调用成员函数的对象。

*this 返回时返回值为调用对象的引用。

参考书目C++ Primer Plus 第6版