需要注意的是类中的静态成员变量只有静态常量并且类型是整型或者枚举类型才能在类内初始化其他都得在类外初始化。#include iostream using namespace std; class Base { public: Base(){ } Base(int num){ } int a { 4 }; int b{ 1 }; double cc 1.23; char aa a; string str hello; string str1{ world }; //string str2(hello,world); //用则会报错类内不能用()初始化在类外这个是有参构造可以使用。 string str3 { hello }; static int c; static const double d; static const char* const e; //静态常量字符数组指向静态字符数组 // 变量是静态常量并且类型是整型或者枚举类型才能在类内初始化其他都得在类外初始化。 const static int f 0; //const static 和 static const 意义相同没有区别 }; int Base::c 8; const double Base::d 3.14; const char* const Base::e i am luffy; int main() { int ab { 4 }; string str7 { hello }; string str8(888); string str9 { 888888 }; return 0; }另外还提供了初始化列表#include iostream using namespace std; class c { public: c() :m_num(66), a(3), b(3) { } c(int n1, int n2, int n3) : m_num(n1),a(n2), b(n3){ } int m_num 8; int a; int b; }; int main() { c c1; c c2(11,22,33); cout c1.m_num c1.m_num c1.a c1.a c1.b c1.b endl; cout c2.m_num c2.m_num c2.a c2.a c2.b c2.b endl; system(pause); return 0; }输出结果c1.m_num 66 c1.a 3 c1.b 3 c2.m_num 11 c2.a 22 c2.b 33使用初始化列表初始化成员变量且从上面的程序中说明先运行了int m_num 8;之后才进行初始化的m_num{66};那么和之前的this-m_num a;初始化方式比较谁先运行呢class c { public: c(int n1, int n2, int n3) : m_num(n1),a(n2), b(n3){ this-m_num 99999; } int m_num 8; int a; int b; }; int main() { c c2(11,22,33); cout c2.m_num c2.m_num c2.a c2.a c2.b c2.b endl; system(pause); return 0;