c++重载赋值操作符的一些疑问?
大家好
下面这段代码我有点疑问,
对于上面一段代码 执行到 a1 = 5 时候 为什么会有一个Constructor 5 和Destructor 5
这里a1 已经调用过构造函数了,这次不应该直接调用 operator=吗?
谢谢大家,有点不明白。
下面这段代码我有点疑问,
class A {
public:
A(int i = 0) {
a = i;
cout << "Consturctor " << a << endl;
}
A(const A&) {
cout << "copy constructor " << endl;
}
A &operator=(const A& ra) {
cout << "= operator " << endl;
return *this;
}
~A() {cout << "Destructor " << a << endl;}
void print(){ cout << a << endl;}
private:
int a;
};
void main()
{
A a1(1), a2(2);
a1 = 5;
}
输出
Consturctor 1
Consturctor 2
Consturctor 5
= operator
Destructor 5
对于上面一段代码 执行到 a1 = 5 时候 为什么会有一个Constructor 5 和Destructor 5
这里a1 已经调用过构造函数了,这次不应该直接调用 operator=吗?
谢谢大家,有点不明白。
...全文
相关推荐
详解C++赋值操作符重载
"C++赋值操作符重载的原理与注意事项"C++中的赋值操作符`=`是我们编程中常用的一个符号,它用于将值从右边的表达式复制到左边的变量。然而,在某些特定场景下,特别是涉及到自定义类型(如类或结构体
C++ operator关键字(重载操作符)的用法详解
操作符重载使得用户定义的类型可以像基本数据类型一样进行算术、比较和其他操作,提升了代码的可读性和易用性。### 为什么使用操作符重载?操作符重载的主要目的是为了增加类的表达力和方便性。
C++中复制构造函数和重载赋值操作符总结
在C++中,复制构造函数和重载赋值操作符是类的重要组成部分,它们在对象的生命周期中起着至关重要的作用。本文将对这两个概念进行详细的总结:1. **复制构造函数和重载赋值操作符的定义**: -
C++中复制构造函数与重载赋值操作符的深入分析
这些规则确保赋值操作符的高效和安全。在C++中,如果一个类拥有指针或需要特别处理的成员,那么定义复制构造函数和重载赋值操作符通常是必要的,因为它们负责正确地处理这些特殊情况。
C++输入输出操作符重载的深入分析
在C++编程语言中,操作符重载是一种强大的特性,允许程序员为自定义类型赋予新的操作符含义。本文将深入探讨C++中的输入输出操作符重载,这对于理解和使用自定义类型进行I/O操作至关重要。


