类与结构体
出于统一编程风格考虑,当我们希望定义的类的所有成员是public时,使用struct,如果希望成员是private的,使用class。
:::tips 使用class和struct定义类的唯一的区别就是默认的访问权限。 :::
自定义一个类型成员
静态成员
友元(friend)
内联成员函数
构造函数(constructor)
它的任务:初始化类对象的数据成员。
注意事项:
- 构造函数没有返回类型,且函数名必须与类名相同
- 支持重载
默认构造函数(default constructor)
不含任何形参的构造函数。
:::tips 只有当类没有声明任何构造函数时,编译器菜会自动地生成默认构造函数。 :::
#include <iostream>using namespace std;class Clock {public:void set_time(const unsigned default_h,const unsigned default_m,const unsigned default_s){h = default_h;m = default_m;s = default_s;};void show_time(){cout << "H:" << h << endl;cout << "M:" << m << endl;cout << "S:" << s << endl;};//Clock() = default;//重写默认构造函数Clock() :h(0), m(0), s(0){};//构造函数Clock(const unsigned default_h,const unsigned default_m,const unsigned default_s){h = default_h;m = default_m;s = default_s;};private:unsigned h, m, s;};
#include "Clock.cpp"int main(){//方法一:调用了默认构造函数Clock c;c.show_time();//方法二:调用类的成员函数c.set_time(9, 10, 29);c.show_time();//方法三:构造函数Clock c2(12, 12, 12);c2.show_time();}
合成默认构造函数
对于没有显式地定义任何构造函数的类,编译器为其创建(合成)默认构造函数。
该构造函数检查类的数据成员,如果提供了类的初始值,就用它执行初始化操作;否则就对数据成员执行默认初始化。
委托构造函数(delegating constructor)
c+11新标准,它把它自己的一些(或者全部)职责委托给了其他构造函数)
复制构造函数
其他函数事项
在类的外部定义构造函数
this
常量成员函数(const member function)
this指针是指向常量的指针,通过区分函数是否是const可以进行重载。
const的作用是修改隐式this指针的类型。
应用场景
一个类中的get函数(类似java中的getter和setter函数)
// 读取类的私有成员变量Cpu_rank getRank() const{return rank;}unsigned getFrequency() const{return frequency;}
