c++ 类

 

1. 构造函数和析构函数

对象的初始化和清理是两个非常重要的安全问题,一个对象或者变量没有初始化时,对其使用的后果是未知的,同样使用完一个变量,没有及时清理,也会造成一定的安全问题,c++提供了这种问题完整的解决方案,即构造函数和析构函数,这两个函数也会被编译器自动调用,完成对象的初始化和对象清理工作。不论编程人员是否喜欢,对象的初始化和清理工作是编译器强制要求的事情,即使不提供初始化操作和清理操作,编译器也会增加默认的操作,只是这个默认初始化操作不会做任何事情,所以编写类应该顺便提供初始化函数。

构造函数:主要用于在创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用

构造函数可以重载,无返回值,可以有参数

析构函数:主要用于对象销毁前系统自动调用,执行一些清理工作。

析构函数不可以重载,无返回值

例:构造函数和析构函数的调用

1. 构造函数的分类和调用

a. 按照参数分类:无参构造函数(默认构造函数), 有参构造函数;

b. 按照类型分类:普通构造函数,拷贝构造函数

People类的描述如匿名对象下面代码所示

 2. 匿名对象:如果编译器发现对象是匿名的,这行代码结束以后就会释放资源

 3. 拷贝构造函数调用的时机

a. 以值传递的方式给函数参数传递、

b. 以值的方式返回局部对象

c. 用已经创建好的对象来初始化新的对象

 4. 构造函数的调用规则:析构函数都会默认提供

a. 用户提供有参的构造函数,编译器将不提供默认的构造函数,但是系统会提供默认的拷贝构造函数

系统默认提供三个构造函数:

默认构造函数:无参数,函数体为空

拷贝构造函数:对类中非静态成员属性进行简单值拷贝

析构函数:无参,函数体为空

b. 当用户提供了拷贝构造函数,系统将不会提供默认和拷贝构造函数

 5. this指针和对象数组

 

posted @ 2019-03-11 12:09  风影旋新月  阅读(107)  评论(0编辑  收藏  举报