[Effective Modern Cpp Notes] Ch03 转向现代C++

07:在创建对象时注意区分()和{} 初始化方式 1 2 3 4 int x1(1); int x2 = 2; int x3{3}; // 统一初始化(列表初始化) int x4 = {4}; // 和第三种方式相同 ()和=初始化的限...

2024-02-01 5411 words 11 min

[Effective Modern Cpp Notes] Ch02 Auto

05:优先选用auto,而非显式类型推断 优点一:避免变量未初始化 使用auto声明的变量未初始化,直接导致编译报错 优点二:简化变量声明(避免写...

2024-02-01 1159 words 3 min

[Effective Modern Cpp Notes] Ch01 类型推导

01:理解模板类型推导 在模板类型推导中,引用类型参数将被视为非引用类型处理,也就是说其引用性被忽略。 - 在万能引用参数类型推导时,左值参数被特...

2024-02-01 2069 words 5 min

[Effective Cpp Notes] Ch08 定制new和delete

49:了解new-handler的行为 new申请内存失败会抛出bad alloc的异常,此前会调用一个错误处理函数,此函数由std::set_...

2024-02-01 2600 words 6 min

[Effective Cpp Notes] Ch07 模板与泛型编程

41: 了解隐式接口与编译期多态 面向对象中的类设计时需要考虑显式接口和运行时多态,而模板编程中需要考虑隐式接口和编译器多态 如果函数的形参是普通...

2024-02-01 4426 words 9 min

[Effective Cpp Notes] Ch06 继承与面向对象设计

32:确定你的public继承构造出is-a关系 public继承的意思是,子类是一种特殊的父类(is-a关系) 子类必须涵盖父类每一个特点,必...

2024-02-01 2624 words 6 min

[Effective Cpp Notes] Ch05 实现

26:尽可能延后变量定义式的出现时间 原因一:程序前面部分可能有if判断、异常处理等,可能不会运行到后面部分 原因二:直接构造的效率高于默认构造...

2024-02-01 1776 words 4 min

[Effective Cpp Notes] Ch04 设计与声明

18:让接口容易被正确使用,不易被误用 函数接口传参,使用者可能理解错误或不小心传错 将函数参数封装为新的类型,比如封装新的年月日类,而非直接传...

2024-02-01 2154 words 5 min

[Effective Cpp Notes] Ch03 资源管理

13:以对象管理资源 资源获取即初始化(RAII):使用析构函数确保资源被释放 复制时使用移动语义,移交资源的所有权 背景:使用动态内存分配时,很...

2024-02-01 1454 words 3 min

[Effective Cpp Notes] Ch02 构造、析构、赋值运算

05:了解C++默默编写并调用了哪些函数 如果没有自定义相应拷贝控制成员,而且需要使用该拷贝控制成员,则编译器进行合成 有时编译器不会进行合成,...

2024-02-01 1885 words 4 min

[Effective Cpp Notes] Ch01 让自己习惯C++

01 视C++为一个语言联邦 C++高效编程守则视状况而变化,取决于你使用C++的哪一部分 C++支持面向过程、面向对象、面向函数、泛型编程、元编程...

2024-02-01 2384 words 5 min

Linux笔记

1. linux入门 1.1 实用程序 man:查询联机手册 1 2 man (section) name # section:1命令,2系统调用,3库函数,5配置文件(因为可能有同名的) man -k regexp...

2024-01-29 6558 words 14 min