gpt4 book ai didi

c++ - 为什么不为语句 "A x(A())"调用 A 的构造函数?

转载 作者:搜寻专家 更新时间:2023-10-31 01:38:43 25 4
gpt4 key购买 nike

<分区>

这是一个关于 C++ 的非常基础的问题。为什么不为语句“A x(A())”调用构造函数?

在下面的代码中——我用 g++ 4.8.2 运行过——构造函数(以及析构函数)只被调用一次。这可能是由于优化所致,但我很好奇 x 的类型 - 由 typeid 报告 - 是“A(A (*)())”。

#include <iostream>
#include <typeinfo>
#include <cxxabi.h>
using namespace std;

class A{
public:
~A() { cout << "Destructed" << endl; }
};

int main() {
int status;

A x(A());
cout << abi::__cxa_demangle(typeid(x).name(),0,0,&status) << endl;

A a ;
cout << abi::__cxa_demangle(typeid(a).name(),0,0,&status) << endl;

return 0;
}

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