代码改变世界

C++类的常用基本成员函数

2018-02-07 14:23  阴天晒得脑瓜疼  阅读(534)  评论(0)    收藏  举报

C++类的常用基本函数主要包括:默认构造函数,普通构造函数,拷贝构造函数,析构函数,赋值(=运算符重载)函数

1.默认构造函数

默认构造函数是在没有显式初始值时,用来创建对象的构造函数。

定义:A(){...}

使用:A a;

2.普通构造函数

无法使用对象来调用构造函数,因为在构造函数构造出对象之前,对象是不存在的。通过编译器来调用。

定义:A(int x){...}

使用:A a(x);

3.拷贝构造函数

(用旧对象初始化新创建的新对象时,构造函数都没有返回值。参数为类对象的引用)

拷贝构造函数用于将一个对象复制到新创建的对象中。它用于初始化过程中(包括按值传递参数),而不是常规的赋值过程中。

定义:A(A&){...}

使用:新建一个对象,并将其初始化为同类现有对象时,拷贝构造函数都将被调用。

A a(b);  

A *a = new A(b);

每当程序生成对象副本的时候,编译器都将使用复制构造函数。具体的说,当函数按值传递对象或者函数返回对象时,都将使用拷贝构造函数。

(使用场景,对象作为参数,对象作为返回值,运算的中间值:副本。)

4.=运算符重载

用于给类对象赋值

定义:A& operator = (A&) {...}

使用:a = b

参数要使用引用,可以避免调用拷贝构造函数创建副本,返回值为对象引用,也可以避免使用拷贝构造函数,可以使用a=b=c这种格式。

进行重载时,要检测自我赋值这种情况,避免出错。

5.析构函数

析构函数是与构造函数匹配的函数,用于对象注销。主要用于处理在构造函数中动态申请内存空间。

 

备注:对象作为函数参数时,使用对象引用可以避免使用拷贝构造函数。返回对象使用引用可以避免使用拷贝构造函数,但是该对象必须已经由函数外定义,传入函数内部。

在构造函数中使用new应该注意的事项:

1.在构造函数中使用new,需要在析构函数中调用delete释放

2.new和delete,new [] 和delete [] 匹配使用。

3.如果存在多个构造函数,使用new的方式要一致,因为析构函数只有一个。

4.要重载一个拷贝构造函数,进行深层次的拷贝。

5.要重载=运算符,来进行深层次的赋值。

算数运算符的重载返回值一般都为对象。