Skip to content

Commit 0640c01

Browse files
committed
Updated to Chapter 11, Section 3
1 parent 9730797 commit 0640c01

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+558
-175
lines changed

Structure.md

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@
432432

433433
这是很有意义的,因为在此之前我们的函数只能返回单个值,现在我们可以用结构体将多个值封装起来一起返回了。
434434

435-
### 编程示例:链表
435+
### 实操:链表
436436

437437
通过对象指针成员和动态内存分配,写一个简单的单向链表。
438438

@@ -450,7 +450,7 @@
450450

451451
还要稍微讲点成员函数的知识。
452452

453-
#### 编程示例:使用`vector`
453+
#### 实操:使用`vector`
454454

455455
使用`vector`的成员函数,完成一些简单的功能。
456456

@@ -462,7 +462,7 @@
462462

463463
介绍下标准库头文件与自定义头文件的问题。
464464

465-
#### 编程示例:跨文件编译
465+
#### 实操:跨文件编译
466466

467467
尝试将类和函数声明在头文件,编译在`definition.cpp`文件,并用`main.cpp`调用函数和定义对象。
468468

@@ -500,7 +500,7 @@
500500

501501
### 运算符重载
502502

503-
#### 编程示例`vector`语法糖
503+
#### 实操`vector`语法糖
504504

505505
重载一些语法糖,让`vector`的操作更简单。边写边讲。
506506

@@ -524,7 +524,7 @@
524524

525525
#### 成员形式的运算符重载
526526

527-
#### 编程示例:自建简易`valarray`
527+
#### 实操:自建简易`valarray`
528528

529529
基于普通数组实现,属于低配版。
530530

@@ -553,7 +553,7 @@
553553

554554
为何使用析构函数,怎样用。
555555

556-
#### 编程示例:改进简易`valarray`
556+
#### 实操:改进简易`valarray`
557557

558558
不用数组而是用指针+动态内存分配的方式来写`valarray`
559559

@@ -593,7 +593,7 @@
593593

594594
再尝试一下用`valarray`指针来分配一批对象,理顺`valarray`指针申请的动态内存空间和`valarray`构造函数申请的动态内存空间有什么区别。
595595

596-
### 编程示例:简单的`string`
596+
### 实操:简单的`string`
597597

598598
#### 功能简介
599599

@@ -651,7 +651,7 @@
651651

652652
#### 构造与初始化
653653

654-
#### 编程示例:适配`vector<int>``stack`
654+
#### 实操:适配`vector<int>``stack`
655655

656656
这里通过私有继承`vector<int>`的方式写一个简单的`stack`,实现一些最基本的功能。
657657

@@ -687,11 +687,11 @@
687687

688688
`dynamic_cast` 需要依赖多态的基类,我们要靠虚函数来实现。
689689

690-
#### 编程示例:不同形状几何图形的面积
690+
#### 实操:不同形状几何图形的面积
691691

692692
### 抽象基类与纯虚函数
693693

694-
#### 编程示例:矩形与正方形
694+
#### 实操:矩形与正方形
695695

696696
定义一个抽象基类,让矩形与正方形都继承它。
697697

@@ -745,39 +745,37 @@
745745

746746
特化模板函数,用于特殊的类型。
747747

748-
#### 编程示例:`swap`对于字符串的特化
749-
750-
这里要交换的就是内容,而非指针。
748+
#### 实操:自制`is_same`
751749

752750
### 类模板
753751

754752
#### 什么是类模板?
755753

756754
我们可以忽略它的部分成员的具体类型,为具有相同特征的成员搭建一个通用的类模板。
757755

758-
#### 编程示例`array`类模板
756+
#### 实操`array`类模板
759757

760758
一个非常简化的`array`类模板,只能实现最基础、最简单的功能,但足够用来讲解了。
761759

762-
#### 如何使用类模板
763-
764-
与函数模板相似,类模板的参数也是要在编译时确定的。
765-
766-
### 类模板的实例化与特化
760+
### 类模板的友元、实例化与特化
767761

768762
#### 实例化
769763

770764
显式实例化和隐式实例化。
771765

772766
与函数模板相似,类模板也不是一个预先给定的类。编译器根据需要,会根据类模板生成若干个对应的类定义。
773767

768+
#### 友元
769+
770+
类模板对函数的友元、对函数模板的友元、对类的友元、对类模板的友元。
771+
774772
#### 完全特化
775773

776774
如何通过完全特化,对某些特殊的类进行不同的处理。
777775

778776
> 不讲不完全特化,放精讲篇。
779777
780-
### 编程示例:智能指针
778+
### 实操:智能指针
781779

782780
带读者写一个`auto_ptr`类模板。
783781

@@ -811,7 +809,7 @@
811809

812810
简单介绍下异常类及其派生类。
813811

814-
### 编程示例`at`成员函数
812+
### 实操`at`成员函数
815813

816814
`array`类模板设计一个成员函数`at`,带范围检测,继承自`std::exception`
817815

code_in_book/11.2-11.3/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "Header.h"
1+
#include "Header.hpp"
22
#include <iostream>
33
int main() {
44
int (*p1)[3] {}, *p2[3] {};

generalized_parts/11_templates_and_fundamental_generic_programming/04_instantiation_and_specialization_of_class_templates.tex renamed to code_in_book/11.4-11.5/Definition.tpp

File renamed without changes.

code_in_book/11.4-11.5/array.hpp

Whitespace-only changes.

code_in_book/7.1-7.3/Definition.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "Header.h" //它需要包含头文件Header.h
1+
#include "Header.hpp" //它需要包含头文件Header.h
22
void input_clear(istream& in) { //声明部分已经有默认参数cin,这里不应再写
33
in.clear();
44
while (in.get() != '\n')

code_in_book/7.1-7.3/Test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "Header.h"
1+
#include "Header.hpp"
22
int main() {
33
int n {1};
44
while (n != 0) {

0 commit comments

Comments
 (0)