
primer
zidian666
这个作者很懒,什么都没留下…
展开
-
C++ primer阅读笔记 继承
若基类中声明了纯虚函数,继承类必须重写该函数。virtual void fun1() = 0;含有纯虚函数的基类是抽象基类,它定义了类的接口,但将接口的实现交给继承类。派生类的成员和友元只能通过派生类访问基类的受保护对象。class Base{protected: int a;};class Inherite: public Base{ friend void f1(Base &b){ //编译器将报错 b.a = 0; }原创 2022-02-21 16:51:28 · 232 阅读 · 0 评论 -
C++ 重载前置和后置++/--运算符
要想同时定义前置和后置运算符,必须首先解决一个问题,即普通的重载形式无法区分这两种情况。前置和后置版本使用的是同一个符号,意味着其重载版本所用的名字将是相同的,并且运算对象的数量和类型也相同。为了解决这个问题,后置版本接受一个额外的(不被使用) int类型的形参。当我们使用后置运算符时,编译器为这个形参提供一一个值为0的实参。尽管从语法上来说后置函数可以使用这个额外的形参,但是在实际过程中通常不会这么做。这个形参的唯一作用 就是区分前置版本和后置版本的函数,而不是真的要在实现后置版本时参与运算。...原创 2022-01-26 09:17:20 · 596 阅读 · 0 评论 -
C++primer阅读笔记 13章 拷贝控制
一个类必须拥有拷贝构造、移动构造、拷贝赋值、移动赋值、析构函数。如果它们未被显式定义,编译器将会自动合成它们。默认的拷贝构造函数会将源对象的成员依次复制到新对象中,如果成员中有类类型,还会调用它们的拷贝构造函数。拷贝初始化通常调用拷贝构造函数完成,有时也会调用移动构造函数。拷贝初始化不仅在我们定义类对象时发生,也会在传递非引用参数、返回非引用对象、初始化列表时发生。拷贝构造函数的参数必须为引用类型。如果不是引用类型,当构造发生时,形参必须拷贝实参,由此调用拷贝构造函数,为了调用拷贝构造函数,又必原创 2022-01-24 15:10:45 · 421 阅读 · 0 评论 -
C++ primer阅读笔记 泛型算法
find函数底层实现是使用类的 == 重载一一对比,这意味着类必须支持 == 。find(begin, end, value),若未查找到value,返回end。vector<int> v{1,2,3,4,5};cout << accumulate(v.begin(), v.end(), 100);cout << accumulate(v.begin(), v.end(), 100, [] (int &a, int &b) { re原创 2022-01-24 11:08:38 · 566 阅读 · 0 评论 -
C++primer笔记 流和容器
“ 由于不能拷贝IO对象,因此我们也不能将形参或返回类型设置为流类型。进行I0操作的函数通常以引用方式传递和返回流。读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的。”whlie(cin >> str) do something;cin >> str返回流的状态,只要流未出错,cin >> str始终为真。difference_type对于不能相减(一般是非随机访问)的迭代器还是有意义的...原创 2022-01-24 10:11:35 · 604 阅读 · 0 评论 -
C++primer阅读笔记 第7章类
“ 在一些简单的应用程序中,类的用户和类的设计者常常是同一个人。尽管如此,还是最好把角色区分开来。当我们设计类的接口时,应该考虑如何才能使得类易于使用;而当我们使用类时,不应该顾及类的实现机理。”const(常量)对象只能访问const成员函数,和全部成员(如果public),但只读。一般(变量)对象可以访问全部成员和成员函数,但对const成员只读。const成员函数只能访问const成员函数。普通成员函数可以访问全部成员函数。简单理解:const对象是常量,当然只读。一般对象..原创 2022-01-24 09:34:34 · 432 阅读 · 0 评论 -
C++11primerP1第6章函数
内联函数,inline声明,直接在调用的地方展开编译,省去调用函数的开销。通常用于,体积小,调用频繁,逻辑简单的函数。constexpr声明表达式或函数为常量,让编译器能在运行前计算出表达式和函数的返回值。assert()括号内的表达式,如果为真无事发生,如果为假程序异常。下面情况中,fun(a)调用第一个函数,fun(b)调用第二个函数。a是int不能绑定到const&,b和第二个函数精确匹配。void fun(int& a);void fun(cons原创 2022-01-21 16:14:36 · 307 阅读 · 0 评论 -
C++primer阅读笔记-第四章:表达式
如果一条表达式中有size()函数,就不要再用int了,避免unsigned和int混用for(size_t i = 0; i < vector.size(); ++i);C++兼容C的头文件,最好按标准用#include <cname>的方式引用#include <cstdio>逻辑与运算符&&,在前一个条件为真时才会检查后一个条件。用数组初始化vector时,可以用std::begin()和end()取数组。int arr[]原创 2022-01-21 14:27:45 · 520 阅读 · 0 评论 -
C++11 primer阅读笔记 第二章
同一类型变量在不同机器上的bits可能不同,好的程序应该知道怎么处理同类型变量在不同机器上拥有不同的尺寸。字符型有三种类型char / signed char / unsigned char,实际表现形式是后两者,声明char型,会由编译器决定具体为后两者之中的哪一种。不要用char型做运算,因为不确定它是否有符号。如果要较小的整型,可以用signed char 和unsigned char.不要把负值赋给unsigned,实际上,最好不要把有符号赋值给无符号。也不要使两个无符号数运算结果为..原创 2022-01-21 11:14:23 · 210 阅读 · 0 评论 -
C++ Primer 中文版 阅读笔记
笔记始于章节11.3.31、multimap和multiset中,若有多个同一键值的元素,这些元素相邻储存2、lower_bound若未查找到seach_item,返回第一个大于seach_item元素的迭代器3、find函数的参数使用反向迭代器,可实现从后向前查找4、equal_range查找关键字返回pair,pair.first和second指向第一个和最后一个(关键字位置)的迭代器5、在一个升序的容器里,如果所有元素都大于你要找的,则upp和low都返回begin。都小于则返回e原创 2022-01-13 14:31:13 · 186 阅读 · 0 评论