• 复制构造函数与重载=操作符


    copy构造函数被用来"以同型对象初始化醉卧对象",copy assignment操作符被用来"从另一个同型对象中拷贝其值到自我对象":
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
     
    class Widget
    {
    public:
    Widget();//默认构造函数
    Widget(const Widget& rhs);//复制构造函数
    Widget& operator = (const Widget& rhs);//赋值操作符
     
    };
     
    int _tmain(int argc, _TCHAR* argv[])
    {   
    Widget w1;//调用默认构造函数
    Widget w2(w1);//复制构造函数
    w1= w2;//赋值操作符
    return 0;
    }
    当你看到赋值符号时请小心,因为"="语法也可以用来调用copy构造函数:
    Widget w3=w2;//调用复制构造函数
    区别方法:如果一个新对象被定义,一定会有一个构造函数被调用,不可能调用赋值操作。如果没有新对象被定义(例如前述的"w1=w2"语句),就不会有构造函数被调用,那么当然就是赋值操作被调用。
     
    复制构造函数是一个尤其重要的函数,因为它定义了一个对象如何以值传递。例如:
    bool hasAcceptableQuality(Widget w)//一个这样的方法
    ...
     
    Widget aWidget;
    if(hasAcceptableQuality(aWidget));
     
    这里 参数w是以by value方式传递给方法的,所以上述调用中aWidget被复制到w体内。这个复制动作由Widget的copy构造函数完成。Pass-by-value意味"嗲用copy构造函数".以by value传递用户自定义类型通常是个话注意。
     
  • 相关阅读:
    POJ3233 构造子矩阵+矩阵快速幂
    HDU4565-数学推导求递推公式+矩阵快速幂
    记录一个状压DP用到的骚操作
    POJ1273 最大流模板
    图论复习...
    2017-7 实训经验贴
    Polya定理应用实例
    直线,椭圆,三角形,折线分割平面问题
    hdu4801 PocketCube 2阶魔方
    1256:献给阿尔吉侬的花束
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3365445.html
Copyright © 2020-2023  润新知