静态成员的初始化

类外初始化

class Student {
    private:
        static int age;
}

int Student::age=20;

一般都是类内声明,类外初始化,因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的

不过,静态常量成员是可以在类内声明的

class Student {
    private:
        static int age=20;//错误,静态成员不能在类内初始化
        const int age=20;//错误,常量成员也不能在类内初始化
        static const int age=20;//正确
}

这里写图片描述

三种必须用初始化列表初始化的

  1. 非静态常量
  2. 引用类型
  3. 没有默认构造函数的类类型

猜你喜欢

转载自blog.csdn.net/GumingW/article/details/81908110