zoukankan      html  css  js  c++  java
  • 复制构造函数与重载=操作符

    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传递用户自定义类型通常是个话注意。
     
  • 相关阅读:
    Strus2第一次课:dom4j操作xml
    Strus2第一次课:dom4j解析xml文档
    2014最后一天,好烦!这个问题从来没遇到过!网上查找了很多办法都没解决!并且no wifi 了!
    MyBatis 入门(一)
    RSA学习记录
    [HCTF 2018]admin学习记录
    [HDCTF2019]together
    BUUCTF刷题记录REAL类
    BUUCTF刷题记录————unencode
    实验四
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3365445.html
Copyright © 2011-2022 走看看