类和对象(5)—— 构造函数的分类及调用

无参数构造函数、有参数构造函数、赋值构造函数

(3)拷贝构造函数

  由已存在的对象,创建新对象。也就是说新对象,不由构造器来构造,而是由拷贝构造器来完成。拷贝构造器的格式是固定的。

 拷贝构造函数的作用:用一个对象初始化另外一个对象

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

using namespace std;

class Test
{
public:
    //无参数的构造函数
    Test()
    {
        m_x = 0;
        m_y = 0;
    }
  //有参数的构造函数
    Test(int x, int y)
    {
        m_x = x;
        m_y = y;
    }

    void printT()
    {
        cout << "x=" << m_x << ",y=" << m_y << endl;
    }
#if 0 //显式地拷贝构造函数 Test(const Test &another) { cout << "Test(const Test &another)..." << endl; m_x = another.m_x; m_y = another.m_y; } #endif #if 0 //会有一个默认的拷贝构造函数 Test(const Test &another) { m_x = another.m_x; m_y = another.m_y; } #endif #if 0 //赋值操作符 void operator=(const Test &another) { m_x = another.m_x; m_y = another.m_y; } #endif private: int m_x; int m_y; }; int main(void) { Test t1(100,200); //拷贝构造函数方式一: Test t2(t1); t2.printT();//x=100,y=200 //拷贝构造函数方式二: Test t3 = t1;//依然是初始化t3时调用t3构造函数,并调用t3的拷贝构造函数 t2.printT();//x=100,y=200 //赋值操作符函数,因为构造函数是对象初始化的时候调用 Test t4; t4 = t1;//调用的不是t4拷贝函数,而是t4的赋值操作符函数 t4.printT();//x=100,y=200 return 0; }
原文地址:https://www.cnblogs.com/yuehouse/p/9792056.html