C++之C11新特性,类内初始化

 根据上面的,我们可以看出,a,b的定义方式是错误的,这个看起来不符合定义,怎么说呢,也就是默认初始化不能通过()的方式,这个看起来既不像函数调用,也不像函数声明,所以是个四不像,那么错误提示我们需要一个id,也就是说编译器把这个认为是对一个变量进行赋值,那么也就是内类初始化,所以编译器理解为对方法名为a的调用,传入参数为1。

c++11声明了 ,类内初始化不能通过 ()的方法进行初始化,可以通过 = 赋值的方式,和 {}  列表赋值的方式。如果没有就使用默认初始值。

#include<iostream>
class Test{
    int a{1}; //或者 =
    int b{2}; //或者 =
public:
    void show()
    {
        std::cout << a << ":" << b << std::endl;
    }
};

int main()
{
    Test test;
    test.show();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/rubikchen/article/details/89645523