gpt4 book ai didi

c++ - 一个变量声明创建多个实例

转载 作者:太空狗 更新时间:2023-10-29 23:39:48 25 4
gpt4 key购买 nike

这是一个简单的例子:

class A {
public:
A() {
printf("%p C1\n", this);
}
A(const char* p) {
printf("%p C2\n", this);
}
};

int main(int argc, char *argv[]) {
A a;
a = "abc";
}

在代码中,虽然 A 只声明了一次,但是创建了两个 A 实例。构造函数被调用两次。我可以在 VS 2013 和 gnu C++ 中重现它。

想知道这种行为是错误还是规范的一部分。

最佳答案

它是规范的一部分。当您这样做时:

a = "abc";

临时 A 对象是使用 A(const char* p) 构造函数从 RHS 上的 "abc" 表达式创建的。这用于为 a 赋值。

如果你这样做

A a = "abc";

您只会看到一个构造函数调用。

关于c++ - 一个变量声明创建多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com