偷偷拿来记录一下萌新的cs路——day 26
空对象占用内存空间测试代码:
#include<iostream>
using namespace std;
class Person {
};
void test01() {
Person p;
cout << "size of p = " << sizeof(p) << endl; // 1
}
int main() {
test01();
}
运行结果:1, 编译器会给空对象分配1字节独有内存,用以区分空对象占内存位置。
非静态成员变量:
#include<iostream>
using namespace std;
class Person {
int m_A; // 非静态成员变量,属于类的对象上
};
void test01() {
Person p;
// 空对象占用内存空间:1
// 编译器给空对象分配1字节独有空间,区分空对象占内存位置)
cout << "size of p = " << sizeof(p) << endl;
}
int main() {
test01();
}
运行结果:
可见非静态成员变量属于类的对象上。
测试静态成员变量、非静态成员函数、静态成员函数:
#include<iostream>
using namespace std;
class Person {
int m_A; // 非静态成员变量,属于类的对象上
static int m_B; // 静态成员变量,不属于类的对象上
void func(){} // 非静态成员函数,不属于类的对象上
static void func2() {} // 静态成员函数,不属于类的对象上
};
int Person::m_B = 0; // 类内声明类外初始化
void test01() {
Person p;
// 空对象占用内存空间:1
// 编译器给空对象分配1字节独有空间,区分空对象占内存位置)
cout << "size of p = " << sizeof(p) << endl; // 1
}
int main() {
test01();
}
运行结果:
可见静态成员变量、非静态成员函数、静态成员函数不属于类的对象上。
以后学了更多知识还会回来更新的!有误之处恳请大佬指正,提前感谢!