自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 (新特性)31

P31:在variableparameter中,使用了tuple做递归继承定义一个tuple<>类型的变量tuple<string,int,int,complex<double>> t; //tuple t; //字符串、整数、整数、复数tuple<>变量的大小sizeof(t);字符串只有一根指针.

2021-04-29 20:35:36 82

原创 (新特性)30

P30:哈希函数hash function所有的数据、所有的结构,都是由基本类型组成的,如果我们知道基本类型如何计算hash code ,然会在用一个办法将hash code组合起来,好像就可以应付任意类型hash<int>()---------->这是临时对象hash<int>()(123)---------->表示调用hash函数,传入的参数是123G4.9版本可以传入string,但是G2.9版本不可以这是一个模板参数,应是一个类型,

2021-04-29 19:32:13 157

原创 (新特性)27

P27:因为std::move(c),将整个容器c当作右值,资源可以被偷,所以往下就不可以使用c了容器的结构与分类,其中红色的就是新增加的P28:其实内部就是一个C++的数组,只是包装成class的样子value_type _M_instance[_Nm ? _Nm : 1]; //_M_instance是一个数组class array的数据---------------->value_type _M_insta...

2021-04-29 16:13:08 91

原创 (新特性)26

P26:move aware 测试接受两个参数的时候,是在同一个class里面做两次测试;如果接受一个参数,是在同一个class里面做一次测试test_moveable( vector<MyString>(), //copy和move版本,2.0版本 vector<MyStrNoMove>(), ...

2021-04-29 11:07:05 58

原创 (新特性)25

P25:带有move意识的class带有move意识的class,在有必要的时候,可以被move,将这个class当成是元素的类型,将来容器需要做copy的时候,就会使用元素的move来取代真正的拷贝MyString有两个成员变量char* _data------------>指针size_t len------------>长度class中有指针,需要写big three-------->拷贝构造、拷贝赋值、析构函数左值(拷贝构造)---...

2021-04-28 22:01:21 44

原创 (新特性)24

P24:G2.9---------->只有pass by referenceG4.9---------->pass by reference➕右值引用右值先转交(传递)到insert中,在转交(传递)到MyString的构造函数中,如果insert设计不合理,会遗失一些信息构造函数--------------->copy拷贝构造、move搬移构造,分为两个版本赋值操作符------------>copy assignment、move assignment

2021-04-28 20:24:24 89

原创 (新特性)23

P23:右值引用右值引用关系到move的语意,move的语义对容器的效率有大幅度的改善解决非必要的拷贝---------->其实就是偷 steal当赋值的右手边(拷贝的来源端)是右值,左手边可以偷steal右手边的东西,而不需要执行一个allocation的动作左值--------->左值就是变量,赋值符号的左手边左值可以出现在=的左边,也可以出现在=的右边右值只能出现在=的右边a+b = 42 -------------->这就是右值引用,不能将42

2021-04-27 20:02:35 65

原创 (新特性)21

P21:递归复合复合----------->本来是三个参数,内含tup<两个参数>class tup<Head, Tail...>-------------------->一共有4个参数,一个参数➕三个参数一共有两个变量,m_head、m_tailHead m_head;composited m_tail; //复合,创建了其他class的对象m_tailm_head就是第一个参数,m_tail就是

2021-04-27 17:02:24 42

原创 (新特性)20

P20:递归继承需要继承------------------>class template类模板tuple<Head,Tail...>-------------->一个参数Head,一包参数Tail 将一个参数Head拿来声明变量m_headHead m_head ...

2021-04-27 16:15:57 103 2

原创 (新特性)19

P19:类模板借由类模板产生的对象,将模板参数一个一个分解开来以异于一般的方式处理first元素和last元素,参考本节的写法;如果first元素和last元素的处理方式相同,参考之前的写法输出-------->头尾两边有[ ] 输出的时候每个元素后面都有,但是最后一个元素没有, 头尾处理方式不相同有几个参数------->sizeof...(args)现在操作的是第几个ma...

2021-04-27 15:16:27 52

原创 (新特性)16--18

P16:输出函数想分解的并不是前面的控制字符串*s表示取出前面的控制字符串--------------------------->%d这种形式的是一组T value,Args... args就是一个参数➕一包参数P17:max函数,检测出一堆数据中最大的那一个使用了{},形成了initializer_list参数个数不限,但是类型相同------------------------------>使用initializer_list编译器.

2021-04-27 11:03:13 78

原创 (新特性)15

P15:函数模板、类模板参数个数会逐一递减------->1个➕1包参数类型会逐一递减------->因为参数个数在减少,所以参数类型也在减少注意...的位置sizeof...(args)需要写边界条件----------->也就是参数是0个的时候,需要写一个无参数的形式,即void print()模板是个半成品,最终编译能不能通过,还要看绑定的模板参数------------->对于这个例子,有可能cout<<不知道要怎.

2021-04-26 22:03:17 182

原创 (新特性)14

P14:C++11导入了lambdas,允许定义出inline function(什么一个地方,马上写出来,)

2021-04-26 21:36:46 50

原创 (面向对象)24

P24:placement new之前的new----------------------->Foo * pf = new Foo;我们可以重载class member operator new(),写出多个版本,前提是每一版本的声明都必须有独特的参数列,其中第一个参数必须数size_t,因为编译器要根据这个参数分配空间我们也可以重载class member operator delete(),写出多个版本。但它们绝不会被delete调用。只有当new所调用的ctor抛出except

2021-04-26 09:44:39 56

原创 (新特性)13

P13:使用新的decltype关键字,你可以让编译器compiler找出一个表达式的类型。这个很像是对typeof的需求(typeof是GC++提供的,不是标准库里面的东西)。然而GC++里面的typeof并不完整、也不一致(不是标准库的,只是GC++提供的),所以,C++11导入了一个关键字decltype。decltype(coll)::value_type elem------------------>coll是容器,decltype(coll)可以知道对象coll是

2021-04-24 17:35:53 87

原创 (新特性)12

P12:类型的化名Type Alias(类似于typedef)typedef void(*func)(int,int); //等同于下面的写法using func = void(*)(int,int); //等同于上面的写法func是一个类型type,是一个函数指针,func有两个参数(int,int),func的返回值类型是void对于第二种情况func的类型type是等号右面,即void(*)(int,int)函数的名称就是函数指针,也.

2021-04-24 15:57:13 68

原创 (新特性)11

P11:模板模板参数template<typename T, template<class T> --------------->class替换成typename,并且这个参数类型与XC1S的第一个参数类型一样,所以可以不用写 class Container >class XC1S对于XC1S类模板,第二个参数也是一个类模板---...

2021-04-24 10:18:53 53

原创 (面向对象)21-22

P22:new-------------->operator new,当我们重载operator new的时候,调用的是重载的operator new,否则,调用的是全局的::operator new 构造函数operator new传的第一个参数是size_t sizeoperator delete还的是内存,所以函数参数是指针pointer在class Foo里面重载了operat...

2021-04-22 21:19:20 96 2

原创 (面向对象)20

P20:const只能放在成员函数的后面,不能放在全局函数的后面成员函数()后面、{}前面的const,表示不改变class里面的数据成员const对象只能调用const成员函数,不可以调用non-const member function因为print是non-const member function,因此会出错operator[]------------->重载[]操作符两个operator[]的返回类型不相同,...

2021-04-22 20:12:48 53

原创 (面向对象)19

P19:动态绑定(汇编代码)

2021-04-22 19:08:18 50

原创 (面向对象)18

P18:通过一个对象调用函数,对象的地址就是this pointerTemplate Method这是一个设计模式的名称父类CDocument------------>OnFileOpen()常规动作 virtual Serialize子类CMyDoc---------------->virtual Serialize ...

2021-04-22 11:20:26 67

原创 (面向对象)17

P17:虚指针、虚表类中,只要有虚函数virtual,一个虚函数或者很多个(≥1),在内存中,就只会多出一根指针,类中无论有几个虚函数,就只会多出来一根指针函数继承,继承的是父类函数的调用权(父类有虚函数,子类也一定有虚函数),而不是在内存中的大小父类有虚函数,子类将父类全部继承下来,继承的是调动权,如果父类有虚函数,那么子类也一定有虚函数Class A占用的内存-------------->Class里面有两个对象,m_data1,m_data2 ...

2021-04-21 22:06:57 46

原创 (面向对象)16

P16:面向对象,谈的就是对象和对象之间的关系,但是对象是由class创建的,实际上谈的是class和class之间的关系--------->继承、复合、委托内存的角度----------->子类对象里面有父类的成分构造函数------------>由内向外调用构造函数,就是先调用父类的构造函数(编译器调用父类的默认构造函数),然后在调用子类的构造函数红色的代码Base()是编译器为我们加上的代码,就是先调用父类的defult构造函数析构函数-------

2021-04-21 20:36:28 37

原创 (面向对象)15

P15:从内存的角度,探讨如下这三个东西值 value本身指针 pointer引用 reference指针就是一种地址的形式,地址就是一种指针的形式----------->地址、指针互通指针-------->指向引用——-->代表//*靠近int可以,*靠近p也可以int* p = &x;int *p = &x;int* p = &x--------------------->p是一个变量,类型是p

2021-04-21 20:16:43 42

原创 (面向对象)14

P14:将一包参数拆分成1+其余的参数其余的参数可以是0个因此需要在写一个函数void print(){}程序才不会出错void print(){ }一包里面有几个参数----------------->sizeof...(args)sizeof...(args)auto,语法糖,帮助我们方便的写代码编译器知道find(c.begin(),c.end(),target)的返回类型,因此可以推出来ite的类型ite的类

2021-04-21 16:03:15 36

原创 (面向对象)13

P13:容器和算法很重要打开设置查看

2021-04-21 11:09:45 33

原创 (面向对象)13

P13:基于对象的部分,面向对象的部分继承、复合、委托写一个代表file的class------->Primitive(基本的、个体,不是组合物)容器,可以容纳很多个Primitive,并且也可以容纳很多Composite---------->Composite那么可以为Primitive和Composite写一个父类(继承,is a),并且不将Composite写死在C++容器中放的东西要一样大小,所以放的是指针Component*,指针是一样的大小..

2021-04-19 19:26:50 50

原创 (新特性)9

P9:=default =delete构造函数、拷贝构造、拷贝赋值、以及新的搬移构造、新的搬移赋值=default表示要编译器给我们的那一个,即使我们已经定义了,也要编译器给我们的那一个=delete表示我们不要它对于编译器提供的默认构造函数default ctor,实际上就是一个空的函数,什么也没做对于继承,编译器会调用父类的默认构造函数但是如果你写了构造函数,并且你还想要编译器给你一个空的构造函数,就用=default我们写了构造函数---...

2021-04-17 17:12:06 334

原创 (新特性)8

P8:for循环的一种特殊写法ranged-based for statementfor(del : coll){ statement} //del是声明 //coll是容器(一堆数据)等同于将coll里面的元素一个一个取出来,放在左面assign的声明中,即放在del中elem是一个迭代器,迭代器的类型

2021-04-17 10:22:01 58

原创 (新特性)7

P7:关键字explicit针对的是构造函数ctors,一个以上的实参-------------->explicit for ctors taking more than

2021-04-17 09:45:19 42

原创 (面向对象)12

P12:当我们使用继承的时候,搭配虚函数才会得到最强有力的效果虚函数:在类的成员函数之前加上virtual,就成为虚函数了数据的继承---------------->(内存的角度)占用了内存的一部分函数的继承---------------->(调用权)继承的是调用权,子类可以调用父类的成员函数非虚函数non-virtual--------------->不希望子类derived class重新定义(override,覆盖)它虚函数virtual-.

2021-04-16 19:51:44 35

原创 (面向对象)11

P11:复合Sequence = deque<T>将PPT中的Sequence都替换成deque<T>复合:类class queue里面有一种class deque<T> c 这种东西复合:has-a(不一定是一种,n种也可以)菱形------------>里面有其他的东西,黑色表示有东西 黑色菱形这一端容纳(has a)、拥有另一端的东西queue就是deque...

2021-04-16 16:02:04 56

原创 (新特性)5、6

P5:一致化设初值的动作可能会让我们掉以轻心,也就是改成{},设初值是个小事情,但是为了完成一致性设初值的动作,背后牵扯出新的设计,这个新的设计对标准库影响很大int i------------->i没有定义初值int j{}----------->虽然没有写初值,但是现在int的初值就是0int* p--------------->指针p,没有设初值,不知道指针指向哪里int* p{}------------->虽然没有写初值,但是现在指针的初值就是n

2021-04-15 19:46:57 54

原创 (新特性)4

P4:图片中灰色的字体是我们可以指定的----------->target、iteauto ite = find(c.begin(),c.end(),target)c的类型---------------->list<string>ite的类型-------------->list<string>::iterator好奇,标准库中有没有使用auto?----------->使用了#if __cplusplus &gt

2021-04-15 17:16:35 44

原创 (新特性)3

P3:space in Template Expressions模板表达式里面的空格新版本C++11vector<vector<int>>旧版本:在两个> >之间要留有一个空格vector<vector<int> >C++11允许使用nullptr代替0和NULL在以前的标准中,NULL就是0f(NULL)----------->如果NULL是0,就调用f(int)f(32767).

2021-04-15 16:04:21 42

原创 (设计模式)2面向对象设计原则

MainForm--------依赖------->Line Rect其中,MainForm是高层模块,稳定;Line是低层模块,变化这种依赖关系导致MainForm也不稳定MainForm-----------依赖--------->shape<------依赖-------Line ...

2021-04-15 15:30:26 39

原创 (设计模式)1.设计模式简介

代码如下:shape.h---------------->分解class Point{ //点public: int x; int y;};class Line{ //线public: Point start; Point end; Line(const Point& start, const Point& end){ this->start = start; ...

2021-04-15 11:07:32 49

原创 (新特性)2

P2:Variadic Templates-------->哈希表、tupletypenema...函数模板调用的时候,就像普通函数一样调用就可以...中,参数个数随意,参数类型随意..也包括零个代码如下://注意...的位置template<typename T,typename... Types>void print(const T& firstArg,const Types&... args)print(args..

2021-04-14 20:35:07 168

原创 (新特性)1

P1:课程涵盖了11和14对于C语言-------------->旧式带有.h,例如#include<stdio.h> 新式不带.h,例如#include<cstdio>对于C++语言----------->不带.h,例如#include<vector>标准库这些东西都被放在命名空间using namespace std中,因此一个东西的全名,就要带着那个东西的命名...

2021-04-14 19:33:29 49

原创 (内存管理)59

P59:Foo的大小--------------->int 4 long 4 string 4 所以Foo对象的大小是12字节operator new(size_t size)------->size实际上就是元素的大小,...

2021-04-14 17:13:00 95

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除