C++ 类域+类的对象大小
个人主页:Jason_from_China-CSDN博客
所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客
所属栏目:C++知识点的补充_Jason_from_China的博客-CSDN博客
概念概述
- 类定义了一个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要使用
::
作用域操作符指明成员属于哪个类域。- 类域影响的是编译的查找规则,下面程序中Init如果不指定类域Stack,那么编译器就把Init当成全局函数,那么编译时,找不到array等成员的声明/定义在哪里,就会报错。指定类域Stack,就是知道Init是成员函数,当前域找不到的array等成员,就会到类域中去查找。
放到类里面实现(内联函数)
放到类里面实现此时是不需要写inline,编译器会自动认为是内联函数,从而进行编译
在类里面的实现和使用
在类域里面的使用,我们可以称之为内联函数
这也是类的最大特点,可以直接定义函数
class Date { public://公有 //构造函数(全缺省构造函数)//内联函数 Date(int year = 1, int month = 1, int day = 1) { _year = year; _month = month; _day = day; } void Func2(); private: //私有成员函数变量 int _year; int _month; int _day; };
类域的使用( ::)
在类外面的实现和使用
这里就涉及到,头文件和实现文件了,一般是把类放到.h文件里面,把实现放到.cpp文件里面
//.h #include<iostream> using namespace std;//取消打印折叠空间 class Date { public://公有 void Func2(); private://私有 }; //类域的调用 void Date::Func2() { cout << "类域的调用:" << endl; }
此时我们发现我们去实现Func2,需要到类域里面去访问。
当然,我们也可以把类放到头文件,把实现放到实现文件里面,这个都是很灵活的
类的对象大小(内存对齐)
这里声明一下,类的对象大小其实和C语言里面结构体内存对齐的篇章差不大多,所以可以先看一下这一篇章,其实对于对象大小的内存对齐,主要就是会对齐,知道为什么需要有内存对齐就可以了
C语言-结构体的内存对齐(重点)_结构体内存对齐-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/137005772