相关疑难解决方法(0)

关于带自引用的C++类

我有点困惑......

为什么在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;
};
Run Code Online (Sandbox Code Playgroud)

但这不是:

static int t = 0;

class A
{
    public:

        A() : m(t++)
        {

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

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

        int m;
};
Run Code Online (Sandbox Code Playgroud)

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

但是......第一个编译得很好(并做了它应该做的事情,即:在类似的语句上崩溃应用程序A a[10];).是A …

c++ exception class

5
推荐指数
2
解决办法
2215
查看次数

标签 统计

c++ ×1

class ×1

exception ×1