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

相关推荐
青岛少儿编程-王老师11 小时前
CCF编程能力等级认证GESP—C++6级—20250927
java·c++·算法
ajassi200011 小时前
开源 C++ QT QML 开发(十)通讯--串口
c++·qt·开源
Janspran11 小时前
监控系统2 - framebuffer
c++
代码AC不AC12 小时前
【C++】AVL树的模拟实现
c++·avl树·底层原理
_w_z_j_12 小时前
C++----bitmap位图的使用
开发语言·c++
BingeBlog12 小时前
[01] Qt的UI框架选择和对比
开发语言·c++·笔记·qt·ui·开源软件
greentea_201313 小时前
Codeforces Round 173 B. Digits(2043)
c++·算法
Q741_14714 小时前
C++ 位运算 高频面试考点 力扣 面试题 17.19. 消失的两个数字 题解 每日一题
c++·算法·leetcode·面试·位运算
初圣魔门首席弟子14 小时前
C++ STL string(字符串)学习笔记
c++·笔记·学习
AA陈超15 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P04-12 可缩放浮点数的曲线表
c++·游戏·ue5·游戏引擎·虚幻