C++
文章平均质量分 70
ASAP_Diablo
这个作者很懒,什么都没留下…
展开
-
Effective C++笔记--面向对象设计
摘自:《Effetive C++》中文版第三版 符号表的概念: 从编译器来看,符号表与编译的各个阶段都有交互,一般来讲,符号表有内存地址和函数/变量的对应关系,编译时节点的各种属性(类型,作用域,分配空间大小,(函数)的参数类型等) 1.为什么要用const,enum,inline替换#define 因为例如 #define kkk 1.653 代码段在编译器开始处理源...原创 2018-04-29 21:19:59 · 237 阅读 · 0 评论 -
深入理解C++对象模型
C++对象模型 每个class产生一堆指向virtual functions的指针,放在表格之中。这个表格称为virtual table(vtbl)。 在每个class中有一个指针vptr,指向相关的vtbl。vptr的设定和重置都是由class的构造函数、析构函数自动完成的。 C++的struct和class 基类和派生类地址空间 explici的作用...原创 2018-04-29 21:19:09 · 319 阅读 · 0 评论 -
浅析Lambda表达式和for_each
Lambda表达式Lambda表达式表示任何一个可调用的代码单元,可以理解为一个未命名的内联函数。[捕获列表](参数列表)->返回类型(可省){函数体}Lambda表达式采用尾置返回值的形式,也就是将表达式返回值放在->之后显示声明捕获列表:可以理解为Lambda函数的原有变量,也就是类似于一个函数中定义的栈上的变量。 首先假定在某一函数中使用lambda表达式,例如void func(){原创 2018-04-27 17:33:20 · 1705 阅读 · 0 评论 -
C++命名空间:namespace
摘自C++ Primer 引入原因 当应用程序用到多个供应商提供的库时,不可避免地会发生某些名字相互冲突的情况。多个库将名字放置在全局命名空间中将引发命名空间污染。 命名空间定义 为防止名字冲突提供了更加可控的机制。命名空间分割了全局命名空间,其中每个命名空间是一个作用域。 使用规则 只要是出现在全局作用域中的声明,都可以在命名空间中定义,例如:类、变量(初始化及其操作)、原创 2018-01-26 14:36:21 · 405 阅读 · 0 评论 -
C++和设计模式
C++单继承多重继承多态实现机制静态多态动态多态虚继承虚表和虚函数设计模式单例模式 1.构造函数设为私有 2.类只有一个实例 3.只提供一个静态的全局访问点 饿汉模式懒汉模式静态内部双重校验锁策略模式1.开闭原则:找出变化的部分,把他们从不变部分中分离出来 这里涉及到在C++中实现接口,因为C++没有interface关键字,因此要通过class和虚函数来实现接口。观察者模式工厂模式原创 2017-12-23 11:01:51 · 330 阅读 · 0 评论 -
Effective C++笔记--资源管理
摘自:《Effetive C++》中文版第三版 1.以对象管理资源 为什么要管理资源? 因为所谓资源就是一旦用了它将来必须还给系统。因此将资源放进对象内,用该对象的析构函数可以达到自动释放资源的目的。智能指针auto_ptr就是一个很好的例子。 考虑一个函数 class PointerObject{ public: #返回一个该类的指针对象 Pointer...原创 2018-05-06 22:07:07 · 278 阅读 · 0 评论 -
Effective C++笔记--设计与声明
摘自:《Effetive C++》中文版第三版 1.让接口正确被使用,不易被误用 预测用户会犯什么样的错误 比如一个函数 string toString(int month, int day, int year); 如果在没有审查机制下,用户可能会乱序填写参数、不按规则填写参数。 这里我们可以将日期对象进行封装,让用户规范进行使用: string toSt...原创 2018-05-07 23:21:07 · 290 阅读 · 0 评论