C++学习笔记
重新学习C++。参考书籍:《C++ Primer 5th》。
ChiLi_Lin
卧槽!卧槽!!卧槽!!!!!
展开
-
C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示
C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示 参考书籍:《C++ Primer 5th》 C++ 学习笔记(12)动态内存、智能指针、new和delete、动态数组、allocator19.1 控制内存分配19.1.1 重载new和de原创 2018-02-26 17:59:16 · 523 阅读 · 0 评论 -
C++ 学习笔记(18)异常处理(noexcept说明符和noexcept运算符、构造函数的try和catch)、命名空间(using声明和using指示)、多继承(虚继承)
C++ 学习笔记(18)异常处理(noexcept说明符和noexcept运算符、构造函数的try和catch)、命名空间(using声明和using指示)、多继承(虚继承) 参考书籍:《C++ Primer 5th》 C++ 学习笔记(5)语句、异常18.1 异常处理18.1.1 抛出异常析构函数中,对于可能抛出异常的操作,必须放在try块中,并得到处理。否则在析构函数抛出异常时,程原创 2018-02-23 01:12:52 · 864 阅读 · 0 评论 -
C++ 学习笔记(17)tuple类型、bitset类型、随机数(引擎和分布)、IO库(操纵符、未格式化输入输出、随机访问)
C++ 学习笔记(17)tuple类型、bitset类型、随机数(引擎和分布)、IO库(操纵符、未格式化输入输出、随机访问) 参考书籍:《C++ Primer 5th》17.1 tuple 类型17.1.1 定义和初始化tupletuple 的构造函数是explicit的。tuple <int, float , string> t = {1, 2.0, "stf"}; // 错误。要原创 2018-02-21 01:13:17 · 712 阅读 · 0 评论 -
C++ 学习笔记(16)模板、引用折叠、std::forward、可变参数模板、模板特例化
C++ 学习笔记(16)模板、引用折叠、std::forward、可变参数模板、模板特例化 参考书籍:《C++ Primer 5th》 API:模板16.1 定义模版16.1.1 函数模版template <typename T> int compare(const T &v1, const T &v2){ if (v1 < v2) return -1; if (v2原创 2018-02-19 19:25:04 · 2300 阅读 · 0 评论 -
C++ 学习笔记(15)面向对象程序设计(类、继承、虚函数、抽象类、using命令、容器与继承)
C++ 学习笔记(15)面向对象程序设计(类、继承、虚函数、抽象类、using命令、容器与继承) 参考书籍:《C++ Primer 5th》 API:类15.1 OOP:概述面向对象程序设计(object-oriented programming)的核心思想:数据抽象、继承、动态绑定。使用基类的引用(或指针)调用一个虚函数时,发生动态绑定(运行时绑定)。15.2 定义基类和派生类1原创 2018-02-14 19:02:02 · 516 阅读 · 0 评论 -
C++ 学习笔记(14)重载运算与类型转换、函数对象、function库
C++ 学习笔记(14)重载运算与类型转换、函数对象、function库 参考书籍:《C++ Primer 5th》 API:运算符重载14.1 基本概念除了重载的函数调用运算符operater( ) 之外,其他重载运算符不能含有默认实参。如果运算符函数是成员函数,左侧运算对象绑定到隐式this指针。&&、|| 和 , 在重载时顺序规则失效。(C++17前) &&、||:同时失去原创 2018-02-11 17:29:06 · 364 阅读 · 0 评论 -
C++ 学习笔记(13)拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符、析构函数、右值引用、引用限定符
C++ 学习笔记(13)拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符、析构函数、右值引用、引用限定符 参考书籍:《C++ Primer 5th》 API:类13.1 拷贝、赋值与销毁13.1.1 拷贝构造函数拷贝构造函数的第一个参数必须是引用类型,通常还是const的引用。因为对于函数参数传递时,非引用类型的参数需要进行拷贝初始化,而如果拷贝构造函数的参数是非引用类型,就原创 2018-02-10 00:23:40 · 1711 阅读 · 0 评论 -
C++ 学习笔记(12)动态内存、智能指针、new和delete、动态数组、allocator
C++ 学习笔记(12)动态内存、智能指针、new和delete、动态数组、allocator 参考书籍:《C++ Primer 5th》 API:动态内存管理静态内存: 保存局部static对象、类static数据成员、定义在函数外的变量。使用前分配,程序结束时销毁。栈内存: 保持函数内的非static对象。存在于程序块中。堆内存(动态分配): 程序控制动态对象。12.1 动原创 2018-02-06 01:56:07 · 1061 阅读 · 0 评论 -
C++ 学习笔记(11)关联容器、桶
C++ 学习笔记(11)关联容器、桶 参考书籍:《C++ Primer 5th》 API:关联容器11.2 关联容器概述11.2.2 关键字类型的要求对于有序容器(map、multimap、set、multiset),关键字类型必须定义元素比较的方法。默认使用<运算符来比较。在自定义<运算符时,必须定义为严格弱序(strict weak ordering):即小于等于,性质如下:原创 2018-02-02 23:53:05 · 747 阅读 · 0 评论 -
C++ 学习笔记(10)泛型算法、lambda表达式、bind函数、迭代器
C++ 学习笔记(10)泛型算法、lambda表达式、bind函数、迭代器 参考书籍:《C++ Primer 5th》 API:算法库、lambda表达式、std::bind、 迭代器10.1 概述算法永远不不会改变底层容器的大小。10.2 初识泛型算法10.2.1 只读算法accumulate,积累。第三个参数类型决定了函数中使用哪个加法运算符以及返回值类型。序列中元素必须与第三原创 2018-01-31 23:30:34 · 413 阅读 · 0 评论 -
C++ 学习笔记(9)顺序容器、容器适配器
C++ 学习笔记(9)顺序容器 参考书籍:《C++ Primer 5th》 API:容器库9.1 顺序容器概述string 和 vector 元素保存在连续的内存空间中。所以用下标计算地址时非常快。forward list 的设计目的是达到与手写单项列表数据结构相当的性能。9.2 容器库概述class A{public: string name; A(strin原创 2018-01-28 17:35:03 · 441 阅读 · 0 评论 -
C++ 学习笔记(8)IO库
C++ 学习笔记(8)IO库 参考书籍:《C++ Primer 5th》 API:std::iostream8.1 IO类8.1.1 IO对象无拷贝或赋值不能拷贝或对IO对象赋值,通常用引用来操作。读写IO对象会改变其状态,所以传递或返回的引用不是const的。ofstream out1, out2;out1 = out2; // 错误。不能对流对象原创 2018-01-25 15:33:20 · 385 阅读 · 0 评论 -
C++ 学习笔记(7)类、友元、默认构造函数(default)、可变数据成员(mutable)、前向声明和不完全类型、聚合类、字面值常量类
C++ 学习笔记(7)类、友元、默认构造函数(default)、可变数据成员(mutable)、前向声明和不完全类型、聚合类、字面值常量类 参考书籍:《C++ Primer 5th》7.1 定义抽象数据类型7.1.2 定义改进的Sales_data类定义在类内部的函数是隐式的inline函数。所有成员必须在类内部声明,但是成员函数体可以定义在类内,也可以定义在类外。this默认是一个常量原创 2018-01-22 17:24:40 · 555 阅读 · 0 评论 -
C++ 学习笔记(6)函数、局部静态对象、重载函数、内联函数、constexpr函数、调试帮助、函数匹配、函数指针
C++ 学习笔记(6)函数、局部静态对象、重载函数、内联函数、constexpr函数、调试帮助、函数匹配、函数指针 参考书籍:《C++ Primer 5th》6.1 函数基础6.1.1 局部对象局部静态对象:在程序执行第一次经过该对象时初始化,直到程序终止才被销毁。size_t count_calls(){ static size_t ctr = 0; return ++原创 2018-01-16 22:39:15 · 458 阅读 · 0 评论 -
C++ 学习笔记(5)语句、异常
C++ 学习笔记(5)语句、异常 参考书籍:《C++ Primer 5th》5.3 条件语句5.3.2 switch语句switch内部的变量定义:不能初始化变量,仅可以定义。最好使用花括号已限制变量作用域。5.4 迭代语句5.4.3 范围for语句(range for statement)遍历序列(拥有能返回begin和end成员的类型): 用花括号括起来的初始值列表。数组。ve原创 2018-01-12 20:26:50 · 368 阅读 · 0 评论 -
C++ 学习笔记(4)表达式、运算符、类型转换(static_cast、const_cast、reinterpret_cast、dynamic_cast)
C++ 学习笔记(4)表达式、运算符、类型转换(static_cast、const_cast、reinterpret_cast、dynamic_cast) 参考书籍:《C++ Primer 5th》4.1 基础4.1.1 基本概念左值:对象的身份(在内存所在的位置)。 赋值对象。取地址符作用对象是左值,返回结果指针是右值。内置解引用运算符、下表运算符对象。原创 2018-01-11 23:50:55 · 440 阅读 · 0 评论 -
C++ 学习笔记(3)命名空间using、字符串、string、vector、迭代器、数组
C++ 学习笔记(3)命名空间using、字符串、string、vector、迭代器、数组 参考书籍:《C++ Primer 5th》3.1 命名空间的using声明头文件不应该包含using声明:如果有,那么每个使用了该头文件的文件都会有这个声明,容易造成冲突。3.2 标准库类型string3.2.1 定义和初始化string对象直接初始化原创 2018-01-09 00:55:25 · 1617 阅读 · 0 评论 -
C++ 学习笔记(2)变量和基本类型(复合类型:引用、指针)、const、constexpr、typedef(using)、auto、decltype
C++ 学习笔记(2)变量和基本类型(复合类型:引用、指针)、const、constexpr、typedef(using)、auto、decltype 参考书籍:《C++ Primer 5th》2.1 基本内置类型2.1.1 算术类型类型char和类型signed char并不一样,类型char可能表现形式是带符号或无符号的,具体由编译器决定。所以最好不要直接用原创 2018-01-05 18:41:03 · 560 阅读 · 0 评论 -
C++ 学习笔记(1)开始
C++ 学习笔记(1)开始 参考书籍:《C++ Primer 5th》 书籍答案:https://github.com/Mooophy/Cpp-Primer1.1main函数返回值:必须为 int。作为指令状态,成功为0,非0通常是错误类型,由系统定义。(P23)默认情况下,读cin会刷新cout;程序非正常终止时也会刷新cout。1.2在使用打印语句原创 2018-01-05 18:39:44 · 294 阅读 · 0 评论