gpt4 book ai didi

c++ - 关于具有自引用的 C++ 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:07 25 4
gpt4 key购买 nike

我有点糊涂了......

为什么在 C++ 中允许这样做:

static int t = 0;

class A
{
public:
A() : m(t++)
{

cout << "C:" << m << endl;
if(t >= 5)
{
A a; // <<<< ----- THIS line
throw( a);
}
}

int m;
};

但这不是:

static int t = 0;

class A
{
public:

A() : m(t++)
{

cout << "C:" << m << endl;
}

A a; // <<<< ----- THIS line

int m;
};

第二个没有按预期进行编译(是的,我知道为什么它没有编译:此时代码中的 A 仍然不完整)...

但是......第一个编译得很好(并且做了它应该做的事情,即:在像这样的语句上使应用程序崩溃:A a[10]; )。 A 是构造函数中的完整类型吗?还可以为我指出一些针对这种情况的 C++ 标准条目吗?

最佳答案

当你声明任何变量时,编译器应该知道它的大小。在第二个示例中,您正在 A 中创建 A 的对象,因此编译器将无法计算要分配的 A 的大小内存。

关于c++ - 关于具有自引用的 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22507947/

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