这两种方法有什么区别?

Tan*_*gar 2 c++ class c++11 c++14

class A
{
   int a = 100;
};
Run Code Online (Sandbox Code Playgroud)

class A
{
    int a;
public :
   A()
   {
      a = 100;
   }
};
Run Code Online (Sandbox Code Playgroud)

我知道有两种方法,因为静态变量在类外部初始化,并且不能在类中完成.但是如果我使用构造函数或在声明本身期间初始化变量a(一个普通的int),它会有什么不同.

Mik*_*l F 5

根据CPP核心指南:http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-in-class-initializer

C.48:在构造函数中为成员初始化器添加类内初始化器,用于常量初始化器

原因明确指出在所有构造函数中都应使用相同的值.避免重复.避免维护问题.它导致最短和最有效的代码.

在您的确切示例中,差异并不是那么大.但是随着类变得越来越复杂,并且您添加了子类和多个构造函数,能够在一个位置定义默认值可以简化代码.