• C++拷贝构造


    在类成员为基本类型情况下,编译器默认提供的拷贝构造函数直接进行值拷贝,是不存在深浅拷贝问题。

    如下即使注释掉运算符重载 和 自己编写的拷贝构造函数,main 函数依然可以正常运行。

    类成员非基本类型且不包含拷贝构造 和运算符重载功能,编译器直接进行值拷贝会出错;在指针情况下只会拷贝指针地址值,代码异常。

     1 #define PMSG(msg) {std::cout << msg << std::endl;}
     2 
     3 class Top
     4 {
     5 public:
     6     std::string name;
     7     int age;
     8     Top() = default;
     9     Top(std::string name, int age)
    10         :name(name), age(age)
    11     {
    12         PMSG("参数构造  函数调用");
    13     }
    14 
    15     /*
    16         拷贝构造函数
    17     */
    18     Top(const Top& ob)
    19     {
    20         name = ob.name;
    21         age = ob.age;
    22         PMSG("拷贝构造  函数调用");
    23     }
    24 
    25     /*
    26         运算符重载
    27     */
    28     void operator=(const Top& ob)
    29     {
    30         name = ob.name;
    31         age = ob.age;
    32         PMSG("运算符重载  函数调用");
    33     }
    34 };
    35 
    36 int main()
    37 {
    38     Top a;
    39     Top b("cxl", 32);
    40     a = b;
    41     Top c(a);
    42 
    43     PMSG(a.name);
    44 
    45     PMSG(c.name);
    46     c.name = "hello";
    47     PMSG(c.name);
    48 
    49     PMSG(a.name);
    50 
    51     PMSG(c.age);
    52 }
  • 相关阅读:
    sort()
    type()
    reverse()
    pop()
    remove()
    max()
    len()
    Ext.Js核心函数( 三)
    聚簇索引和非聚簇索引区别
    Ext.js入门(二)
  • 原文地址:https://www.cnblogs.com/chenxiaolinembed/p/16174008.html
Copyright © 2020-2023  润新知