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传递用户自定义类型通常是个话注意。
     
  • 相关阅读:
    微服务架构总结
    微服务-网关服务
    HttpClient-RestTemplate-Feign
    RPC和REST
    Springmvc的拦截器执行顺序及各方法作用
    秒杀系统优化方案(下)吐血整理
    秒杀系统优化方案(上)吐血整理
    分布式session的管理
    缓存设计——缓存和数据库的数据一致性
    个人理解的javascript作用域链与闭包
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3365445.html
Copyright © 2011-2022 走看看