gpt4 book ai didi

c++ - 带有 bool 参数的构造函数允许编译 Java 风格的代码

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:41 24 4
gpt4 key购买 nike

今天这让我大吃一惊,直到我才意识到 compiles带有 bool 参数。

#include <iostream>
using namespace std;
class Foo {
bool _param;
public:
Foo(bool param) {
_param = param;
}
void say() {
cout << "Param is "<< _param << endl;
}
};

int main() {
Foo foo = new Foo(true);
foo.say();
return 0;
}

我还注意到构造函数被调用两次,那么我的猜测是由“new Foo(true)”创建的指针被转换为 bool 值。是吗?如果是这样,为什么它不适用于其他参数类型?还有什么我没看到的吗?

最佳答案

Foo foo = new Foo(true);

相当于

   Foo foo(new Foo(true));

并且new的指针结果变为true

这就是它编译的原因,并且你有内存泄漏。

关于c++ - 带有 bool 参数的构造函数允许编译 Java 风格的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41330421/

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