C++面向对象(四):初始化列表、指针访问对象成员的原理
初始化列表
是一种便捷的初始化成员变量的方式
- 只能用在构造函数中
- 初始化顺序只跟成员变量的声明顺序有关
#include <iostream>
using namespace std;
struct Person {
int m_age;
int m_height;
/*
Person(int age, int height) {
m_age = age;
m_height = height;
cout << m_age << endl;
}
*/
// 语法糖,初始化列表,代替上面的写法,效率一致
Person(int age, int height) :m_age(age), m_height(height) {
}
};
int main() {
Person person(6, 666);
cout << person.m_age << endl;
cout << person.m_height << endl;
getchar();
return 0;
}
看一下汇编,完全一致:
mov eax,dword ptr [ebp-8]
mov ecx, dword ptr[ebp + 8]
mov dword ptr[eax], ecx
mov eax, dword ptr[ebp - 8]
mov