C++编程思想 第1卷 第12章 运算符重载 重载赋值符

赋值符常引起C++程序员初学者的混淆
‘=’ 在编程中最基本的运算符,在机器层上拷贝寄存器

MyType b;
MyType a = b;
a = b;

MyType a = b;定义对象a,一个新对象先前不存在,现在正被创建。C++编译器
关于对象初始化会保护,对象被定义的地方构造函数总是被定义。但是调用哪个
构造函数呢?a从现有的MyType对象创建 b在等号的右侧,所以只有一个选择:
拷贝构造函数。输入这里包括一个等号,但拷贝构造函数仍被调用

a = b;在等号左侧有一个以前初始化了的对象。不用为一个已经存在的对象
调用构造函数。 a调用 MyType::operator =,把出现在右侧的任何东西作为
参数  可以有多种取不同右侧参数的operator=函数

拷贝构造函数没有参数限制,任何时候使用一个 “=”代替普通形式的构造函数
用来初始化一个对象,无论等号右侧是什么,编译器都会寻找一个接受右边
类型的构造函数

 

//: C12:CopyingVsInitialization.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
class Fi {
public:
  Fi() {}
};

class Fee {
public:
  Fee(int) {}
  Fee(const Fi&) {}
};

int main() {
  Fee fee = 1; // Fee(int)
  Fi fi;
  Fee fum = fi; // Fee(Fi)
} ///:~

 


处理 = 时,会有差别:如果对象还没有被创建,初始化是需要的,否则使用
赋值operator=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值