发新话题
打印

合成复制赋值运算符,孤独的战士

合成复制赋值运算符,孤独的战士

1. 总的来说,一个普通的类,编译器会自动生成以下成员方法
class A
{
}

经编译合成后的,自动生成四个方法,类似这样:
class A
{
      A(){} ; // 默认构造函数
      A(const A&) ;// 复制构造函数
      A & operator=(const A&);// 赋值运算
      ~A(); // 析构函数      
}

2. std::string x = "abc"; // 调用转换构造函数
    x = "123";// 调用赋值运算

    注意,同样是=,差别大着呢,第一式,是初始化,是什么值也没有,第二是赋值,已经有值,用新值覆盖,用赋值运算
3. 赋值运算,不如转换和复制构造函数有用,只有=这种显式调用,编译器不会用这个方法,在后面处理些什么,
    转换和复制构造函数就不同了,有很多隐式的调用,比如,形参实例化,返回对象,容器内复制对象等。

TOP

发新话题