C++ =运算符重载和构造函数重载的区分

博客介绍了C++中构造函数重载,允许在同一范围声明功能类似的同名函数,但形式参数须不同。还强调区分初始化和赋值的重要性,指出初始化是构造函数编写,赋值语句涉及 = 运算符重载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造函数重载

//例子来源于友学网1533
class Complex{
public:
    Complex(double re, double im);   
    Complex(double re);
    //Complex operator=(double re);
};
Complex::Complex(double re, double im){
    _re = re;
    _im = im;
}
Complex::Complex(double re){
    _re = re;
    _im = 0.0;
}

为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同
上面的例子中,如果初始化使用一个实数,那么会调用第二个构造函数

区分初始化和赋值

    Complex c1(3, 5); // 用复数3+5i初始化c1 
    Complex c2=4.5; // 用实数4.5初始化c2 

关键的问题在于第二行
虽然这是一个 = 但是这个语句是C2的初始化而不是赋值
因此以下两句是等价的

    Complex c2=4.5;
    Complex c2(4.5);  

所以说,区分好初始化赋值语句是很重要的,因为所有的初始化都是对于构造函数的编写,而赋值语句则是对于 = 的运算符重载

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值