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传递用户自定义类型通常是个话注意。
     
  • 相关阅读:
    VMware虚拟机安装
    软件测试面试题汇总
    软件测试步骤详解
    软件测试的分类&软件测试生命周期
    BUG 的生命周期
    Jmeter连接Mysql数据库
    Navicat连接Mysql报错:Client does not support authentication protocol requested by server;
    Mysql安装(win10 64位)
    Jmeter生成测试报告
    (转)Jmeter http请求之content-type
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3365445.html
Copyright © 2011-2022 走看看