gpt4 book ai didi

奇怪的堆栈上的 c++ 分配

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:51 27 4
gpt4 key购买 nike

g++ 的奇特之处(也许还有其他编译器?):

struct Object {
Object() { std::cout << "hey "; }
~Object() { std::cout << "hoy!" << std::endl; }
};

int main(int argc, char* argv[])
{
{
Object myObjectOnTheStack();
}
std::cout << "===========" << std::endl;
{
Object();
}
std::cout << "===========" << std::endl;
{
Object* object = new Object();
delete object;
}
}

与 g++ 兼容:

===========
hey hoy!
===========
hey hoy!

第一种分配不构造对象。我错过了什么?

最佳答案

第一种构造实际上并不是构造对象。为了使用默认构造函数在堆栈上创建对象,您必须省略 ()

Object myObjectOnTheStack;

您当前的定义风格声明了一个名为 myObjectOnTheStack 的函数,该函数返回一个 Object

关于奇怪的堆栈上的 c++ 分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292995/

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