• 类和对象(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; }
  • 相关阅读:
    poj 2388
    BUAA 1489
    poj 2524
    poj 2109
    poj 2503 Babelfish
    poj All in All
    poj 1611 The Suspects
    poj 2299
    poj 1328
    hdu 1008 Elevator
  • 原文地址:https://www.cnblogs.com/yuehouse/p/9792056.html
Copyright © 2020-2023  润新知