版权声明:K5出品,必属精品,欢迎收藏评论 https://blog.csdn.net/a694861283/article/details/88641919
第十六章已经读完,即将清空本文章,转换为个人心得
16.1 引言
16.2 类基础
(1)一个类就是一个用户自定义类型
(2)一个类由一组成员构成,最常见的是数据成员和成员函数
(3)成员函数可定义初始化(创建)/拷贝/移动和清理(析构)等语义
(4)对象使用.(点)访问成员,指针使用->(箭头)访问成员
(5)可以为类定义运算符,如+ ! 和[]
(6)一个类就是一个包含其成员的名字空间
(7)public成员提供类的接口,private成员提供实现细节
(8)struct是成员默认为public的class
16.2.1 成员函数
16.2.2 默认拷贝
//一个类对象可以用同类的另一个对象的副本进行初始化
Date d1=my_birthday;
Date d2{my_birthda};
//类对象默认可以通过赋值操作拷贝
void f(Date& d){
d=my_birthday;
}
16.2.3 访问控制
私有的函数只能被成员函数使用,公有的函数构成类对象的公共接口
可以将数据成员放在最后,用来强调公共用户接口的函数
16.2.4 class和struct
16.2.5 构造函数
Date today=Datae(1,2,3);
Date today(1,2,3);
//推荐这种写法
Date today=Date{1,2,3};
Date today{1,2,3};
//参数默认值可以防止接口没有数据的情况发生
class a{
public:
Date(int dd=0,int mm=0,int yy=0);
}
16.2.6 explicit构造函数
16.2.7 类内构初始化器
Date::Date(int dd):d{dd},m{today.m},y{today.y}
{
...
}
16.2.8 类内函数定义
如果一个函数不仅在类中声明,还在类中定义,那么它就被当作内联函数处理,即很少修改且频繁使用的小函数适合类内定义,工具类不影响流程很适合用作内联函数
C++ inline函数是一种“用于实现的关键字”,而不是一种“用于声明的关键字”
//Google C++编码规范 高质量程序设计指南——C++/C语言
void Foo(int x, int y);
inline void Foo(int x, int y) // inline 与函数定义体放在一起
{
...
}
16.2.9 可变性
一个名字可以指向一个保存不可变值的对象(const/常量),也可以指向一个保存可变值的对象.
//常量成员函数不会修改数据成员的值
int Date::year() const{
return ++y;
}
const和非const对象都可以调用const成员函数,而非const成员函数只能被非const对象调用
可以将一个类成员定义为mutable,表示即使在const对象中,也可以改变数据成员
16.2.10 自引用
this的使用
16.2.11 成员访问
就是.和->
16.2.12 static成员
是类的一部分但不是某个类对象一部分的变量成为static成员,static成员只有唯一副本,而不是像普通非static成员那样对每个对象都有其副本
16.2.13 成员类型
泛型的使用
16.3 具体类
在定义明确类的表示方式后,可以将对象置于栈\静态分配的内存\其他对象中,还可以拷贝和移动对象,还可以直接引用具体对象