zoukankan      html  css  js  c++  java
  • 直接初始化、拷贝初始化

    1.直接初始化

    1)直接初始化实际上是要求编译器选择参数最匹配的一般构造函数

    2.拷贝初始化

    1)拷贝初始化实际上时要求编译器将右侧运算对象拷贝到正在创建的对象中,如有需要,还要进行类型转换

    2)拷贝初始化通常使用拷贝构造函数来完成

    3)拷贝初始化发生时机:

    • 用等号"="定义变量时(注意定义二字,不是定义的时候使用等号是调用拷贝赋值运算符)
    • 将一个对象作为实参传递给一个非引用的形参
    • 从一个返回类型为非引用类型的函数中返回一个对象
    • 用花括号列表初始化数组元素或者一个聚合类中的成员(因为也用到了等号"="定义变量)

    3)编译器可以“绕过”拷贝构造函数:即编译器有时可以进行优化(但不是必须),跳过拷贝构造函数,直接使用转换构造函数构造对象

    string s = "666";    //先调用转换构造函数来构造一个临时的string对象(内容为:666),再调用拷贝构造函数用这个临时对象来构造s
    编译器可以优化为:
    string s("666");    //直接调用转换构造函数来构造对象
  • 相关阅读:
    cogs luogu 1901. [国家集训队2011]数颜色 待修改莫队
    luogu cogs 421. HH的项链
    luogu P2709 小B的询问
    排序
    算法基本概念
    金融的简单介绍
    Admin组件-----Django自带
    day02-菜单处理
    day01
    selenium常用方法
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9717699.html
Copyright © 2011-2022 走看看