github上的每日学习 10

一、 委托构造函数

委托构造函数用在什么地方呢?
当一个类里有许多构造函数的时候,往往会又很多重复的,这就像重载函数一样,这时候C++就给出了委托构造函数来解决这个问题!
理解机制:就是一个构造函数委托另一个构造函数来完成任务。
例子:

原来需要写的两个构造函数:

应用了委托构造函数之后:

其实这就相当于在第二构造函数里面调用第一个构造函数完成赋值。这样做的好处是保持修改的方便快捷!

二、 复制构造函数

用在什么地方:想要把一个已有对象赋值给新对象的时候。
运行机制:赋值啦!
编译器会构造默认的复制构造函数。
使用说明:它的形参是本类对象的引用。
语法:

声明:
Class 类名{
Public:
类名(形参);//构造函数
类名(const 类名&对象名);//赋值构造函数,const的作用,已经学习过引用是可以双向传递的,所以要保证赋值过后就要两个对象无关,所以这时候写const保证是一次赋值。

}
定义
类名::类(const 类名&对象名)//复制构造函数的实现
{函数体}

参数是类的对象是会发生复制构造,返回值是对象是也会产生复制构造。当然隐含的赋值构造函数会大部分解决的。(没有指针成员)
当然,也有一些情况下不想要编译器生成隐含的赋值构造函数,这时候可以用delete

在class中写上:
Class 类名{
Public:
类名(形参);//构造函数
类名(const 类名&对象名)=delete;//不生成隐含的复制构造函数 
}

三、 赋值构造函数的练习

Point::Point(const Point &p)
{
    X=p.x;
    Y=p.y;
Cout<<”Calling the copy constructor”<<endl;
}

四、 析构函数

用在哪?
对象被删除后完成一些清理工作!
编译器还是有默认析构函数。
语法:

类中声明:

~Point();

定义析构函数:

Point::~Point(){ }
参数表必须为空。

猜你喜欢

转载自www.cnblogs.com/zouzou-1/p/12266552.html