小编Ovi*_*sca的帖子

用于赋值的参数化构造函数

我注意到一些我在参数化构造函数中无法理解的行为.鉴于以下计划:

#include <iostream>
using namespace std;

class A {
public:
    int x;

    A() {}

    A(int i) : x(i){
        cout << "A\n";
    }
    ~A(){
        cout << "dA\n";
    }

};

int main(){
    A p;
    p = 3;
    cout << p.x << endl;
    p = 5;
    cout << p.x << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到输出:

A
dA
3
A
dA
5
dA
Run Code Online (Sandbox Code Playgroud)

这意味着使用=触发器参数化构造函数,销毁它所调用的对象并创建一个新对象.我无法理解这种行为,我无法在标准中找到答案(我确信它存在于某个地方,但可能以复杂的方式陈述).有人可以帮我解释一下吗?

c++ oop c++11

3
推荐指数
2
解决办法
60
查看次数

标签 统计

c++ ×1

c++11 ×1

oop ×1