一、初始化列表
C++提供初始化列表语法用来初始化属性
语法:构造函数():属性1(值1),属性2(值2)...{ }
class People
{
public:
//传统初始化操作
Person(int a, int b, int c)
{
A = a;
B = b;
C = c;
}
//初始化列表初始化属性
Person():A(10),B(20),C(30)
{
}
//初始化列表可变值
Person(int a, int b, int c):A(a),B(b),C(c)
{
}
private:
int A;
int B;
int C;
}
void test()
{
Person p(10,20,30);//传统方法
Person p;//初始化列表初始化属性
Person p(10,20,30);//初始化列表可变值
}
二、类对象作为类成员
class A{}
class B
{
A a;
}
先构造A再构造B,先析构B再析构A(先进后出LIFO)
三、静态成员变量
所有对象共享同一份数据 -- 你改了别人用的就是改过的数据
在编译阶段分配内存 -- 生成了exe程序,还没有双击运行之前已经分配在全局区中
类中声明,类外初始化 -- 必须要有一个初始值否则没法用
class Person
{
public:
static int m_A;
}
//类外初始化
int Person::m_A = 100;
静态成员变量不属于某一个对象上面,所有对象共享同一份数据,因此有两种访问方式:
1、通过对象访问
Person P;
cout << P.m_A << endl;
2、通过类名访问
cout << Person::m_A << endl;
静态成员变量访问权限:在Private作用域下访问,出了这个类不可以访问
四、静态成员函数
所有对象共享同一个函数,类外访问不到私有静态函数
静态成员函数只能访问静态成员变量
class Person
{
public:
static void func()
{
m_A = 100;//静态成员函数可以访问静态成员变量
cout << "static void func调用" << endl;
}
static int m_A;
};
int Person::m_A = 0;
void test0()
{
//通过对象访问
Person P;
P.func();
//通过类名访问
Person::func();
}
标签:初始化,访问,int,C++,Person,深入,静态,class,构造函数
From: https://blog.csdn.net/weixin_60546365/article/details/140480623