ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++程序设计兼谈对象模型(侯捷)【二】

2022-01-19 23:58:11  阅读:165  来源: 互联网

标签:函数 C++ operator 编译器 模板 侯捷 new 兼谈 指针


conversion function 转换函数

operator double() const {};
转换的类型可以使任何类型,只要先前出现过,编译器认得即可。
关键字:explicit 用的比较少,用在构造函数前面,表示构造函数只能用于构造,不能用于转换。

pointer-like classes

类像指针

关于智能指针

做一个比原指针更聪明的指针。
sp->method();
->作用在sp上,得到的结果为px,得到的结果要继续用->作用上去。
结果为:px->method();

关于迭代器

操作符重载很重要!

function-like classes 仿函数

类像函数。它创建的对象调用()成员函数的方式与函数调用相同,它创建的对象就叫做函数对象。
标准库中,仿函数会继承一些奇特的base classes:unary_function,binary_function.

namespace 经验谈

类模板

函数模板

成员模板

模板特化

特殊化,特化可以有任意的版本

模板偏特化

局部特化,

个数的偏

两个不确定类型->一个不确定类型

范围的偏

任意类型->指针

模板模板参数

关于C++标准库

年轻的经验:容器和算法最好都要手写小实例测试一下。加油!

variadic templaes 数量不定的模板参数 1个和1包

看1包是几个:sizeof…(args)

auto 编译器推导

ranged-based for

for(decl :coll) {
statement
}

reference 是一种漂亮的指针

object 和其reference的大小相同,地址也相同,是编译器制造出来的假象。
引用底部只是指针,32位电脑上就是四个字节,可是编译器制造出一种假象,使得它和object的大小相同。
通常不用于声明变量,而用于参数类型和返回类型的描述。

object modal 对象模型

继承不仅要继承数据,也要继承函数,继承函数继承的是它的调用权,而不是它的内存大小。

vptr 虚指针 vtbl 虚表

vptr指向vtbl,vtbl放的是函数指针,指向虚函数。

函数调用:

静态绑定(call 地址) :调用某个地址;
动态绑定(虚机制):三个条件:通过指针调用;指针向上转型(声明时指向父类,new(实际创建)的时候指向子类);调用的是虚函数。p指向哪个对象决定了调用哪个虚函数。
多态 :所有的指针都是声明的指向A,可是最终它们指向不同的东西,其中这些东西都属于A。例如:list<A*> myLst;
多态 虚函数 动态绑定其实是说的同一件事情。

动态绑定

this

虚函数用法:多态 模板方法(设计模式)
C++所有成员函数都有一个隐藏的this指针作为参数。

重载 ::operator new ::operator delete ::operator new[] ::operator delete[]

全局函数重载
编译器调用

重载 member operator new operator delete operator new[] operator delete[]

成员函数

重载new() delete()

new的种类:new表达式,operator new,operator new[],new()

标签:函数,C++,operator,编译器,模板,侯捷,new,兼谈,指针
来源: https://blog.csdn.net/m0_52835296/article/details/122577481

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有