C++ primer笔记

1 类 p229

类的基本思想是 数据抽象封装

数据抽象:是依赖于接口和实现分离的编程技术。

类的实现包括 类的数据成员、负责接口实现的函数、定义类所需的各种私有函数。

2 引入this

成员函数通过this的额外隐式函数访问调用它的那个对象,this形参是隐式定义的,因为this总是指向调用它的对象,因此this是一个常量指针,不允许改变this中保存的地址。

默认情况下this的类型是指向类型非常量版本的常量指针。通过引入const,即在成员函数参数列表后紧跟const,string isbn() const{return bookNo};可修改隐式this指针的类型。此时表示this是一个指向常量的指针。这样使用const的成员函数成为常量成员函数。

cpp 复制代码
因为常量对象、常量对象的引用或指针都只能调用常量成员函数,因此若不引入const,会导致this不能绑定到常量对象上,就不能在常量对象上调用普通的成员函数。

3 定义IO类 p234

IO类不能被拷贝,只能通过引用来传递它们。

cpp 复制代码
// istream和ostream传入的第一个参数为普通引用,因为在输入输出过程,流在不断变化,因此不能常量引用。
istream &read(istream &s,Sales &item){
	int price = 0;
	is >> item.bookNo >> item.nums >> price;
	item.revenue = preice * items.nums;
	return is;
}
ostream &print(ostream &os,const Sales &item){
	os << item.isbn() << item.revenue;
	return os;
}

4 构造函数 p235

①构造函数任务是初始化类对象的数据成员,无论何时只要类对象被创建,就会执行构造函数。

②构造函数不能声明成const的,当创建类的一个const对象时,直到构造函数完成初始化过程,对象才能真正取得常量属性。

③只有当类没有声明任何构造函数,编译器才会自动生成默认构造函数(称为合成的默认构造函数).
某些类不能依赖于合成的默认构造函数:原因:

① 在没有任何构造函数情况编译器才会自动生成默认构造函数,一旦定义了一个其他构造函数,就必须定义默认构造函数,否则将不会自动生成默认构造函数。

②对于某些类,合成默认构造函数可能会有错误操作,若定义在块中的内置类型或复合类型(指针/数组),则它们的值是未定义的。除非对它们进行手动初始化。

③编译器有时不能为某些类合成默认构造函数,如类中包含其他类类型的成员,且这个成员的类型没有默认构造函数,编译器就无法初始化该成员,此时必须自定义默认构造函数。

5 访问控制与封装

访问说明符:

①public:成员整个程序可被访问,定义类的接口。

②private:成员可以被类的成员函数访问,但不能被使用该类的代码访问,其封装了类的实现细节。

一个类可以包含0或多个访问说明符。

5.1 class和struct区别 p241

两者的默认访问权限不同:对struct,定义在第一个访问说明符之前的成员是public,而使用class时,这些成员是private的。

相关推荐
liulun3 小时前
Windows注册鼠标钩子,获取用户选中的文本
c++·windows·qt
无 证明6 小时前
【C++】类和对象 (第一弹)
开发语言·c++·算法
疾跑哥布林升级版7 小时前
C++---day7
开发语言·c++·算法
程序员老茶8 小时前
C++:函数
开发语言·c++
郭涤生8 小时前
Chapter 7: Compiling C++ Sources with CMake_《Modern CMake for C++》_Notes
c++·笔记·软件构建
fakerth8 小时前
计算机面试八股(自整)
c++·面试
双叶8369 小时前
(51单片机)矩阵按键密码锁表白(C语言代码编撰)(矩阵按键教程)(LCD1602浅教程)
c语言·开发语言·c++·算法·游戏·矩阵·51单片机
海棠蚀omo9 小时前
C++笔记-string(下)
开发语言·c++·笔记
天堂的恶魔9469 小时前
C++ —— 文件操作(流式操作)
c++
dora11 小时前
逼格提起来,使用curl发送网络请求
android·c++