声明在C++中使用之前?

Sud*_*rma 2 c++

以下代码进行编译,而名称"aNumber"在使用前未声明.

class A
{
    A()
        :aNumber(100)
    {
    }
    void foo()
    {
         aNumber = 0;

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

如果以上代码编译,那么为什么不遵循: -

A.
class Dummy
{
    void foo(INT);
    typedef int INT;
};
Run Code Online (Sandbox Code Playgroud)

B.通过成员变量进行默认初始化: -

class Dummy
{
    void foo(int y = x);
    int x;
};
Run Code Online (Sandbox Code Playgroud)

Kor*_*icz 8

  1. 在编译案例中,类中元素的顺序是不可逆的.
  2. typedef的情况下,订单是相关的,因为在范围之外可见的名称可能被新的typename覆盖.
  3. 第三个例子是格式错误的,你不能用非静态成员变量初始化.