C++ 构造函数、析构函数和拷贝构造的调用
构造函数
构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。
析构函数
析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作。
拷贝构造函数
拷贝构造函数是一种特殊的构造函数,其形参必须是引用,但并不限制为const,一般普遍的会加上const限制。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。
实例
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
class Test
{
public:
Test(int data = 0)//构造函数
{
m_data = data;
cout << "调用构造函数: " << this << endl;
}
Test(const Test &t)//拷贝构造函数
{
m_data = t.m_data;
cout << "调用拷贝构造函数: " << this << endl;
}
~Test()//析构函数
{
cout << "调用析构函数: " << this << endl;
}
public:
int GetData()const
{
return m_data;
}
private:
int m_data;
};
Test fun(Test pt){
int value = pt.GetData();
Test tmp(value);
return tmp;
}
int main()
{
Test t1(10);
Test t2(t1);
fun(t1);
}