C++程序设计(The C++ Programming Language )----第十六章类

版权声明: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 具体类

在定义明确类的表示方式后,可以将对象置于栈\静态分配的内存\其他对象中,还可以拷贝和移动对象,还可以直接引用具体对象

16.3.1 成员函数

16.3.2 辅助函数

16.3.3 重载运算符

猜你喜欢

转载自blog.csdn.net/a694861283/article/details/88641919