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的。

相关推荐
si莉亚6 分钟前
ROS2安装EVO工具包
linux·开发语言·c++·开源
智者知已应修善业24 分钟前
【51单片机单按键切换广告屏】2023-5-17
c++·经验分享·笔记·算法·51单片机
良木生香37 分钟前
【C++初阶】C++入门相关知识(2):输入输出 & 缺省参数 & 函数重载
开发语言·c++
小此方38 分钟前
Re:从零开始的 C++ 进阶篇(三)彻底搞懂 C++ 多态:虚函数、虚表与动态绑定的底层原理
c++
忘梓.38 分钟前
墨色规则与血色节点:C++红黑树设计与实现探秘
java·开发语言·c++
hhh3u3u3u39 分钟前
Visual C++ 6.0中文版安装包下载教程及win11安装教程
java·c语言·开发语言·c++·python·c#·vc-1
凤年徐41 分钟前
C++手撕红黑树:从0到200行,拿下STL map底层核心
c++·后端·算法
星河耀银海42 分钟前
C++ 模板进阶:特化、萃取与可变参数模板
java·开发语言·c++
cccccc语言我来了1 小时前
【C++---unordered_set/map底层封装】个不拘一格的集合。它不似有序集合那般循规蹈矩,而是以一种洒脱不羁的方式,将元素们随意地散落其中。每一个元素都是独一无二的。
开发语言·c++·哈希算法
Zfox_1 小时前
C++ IO流全解析:标准库中的数据处理与文件读写艺术
开发语言·c++