随笔分类 -  c++

摘要:Calling a virtual function is slower than calling a non-virtual function for a couple of reasons: First, we have to use the *__vptr to get to the appr 阅读全文
posted @ 2019-05-31 11:30 zzfx 阅读(170) 评论(0) 推荐(0) 编辑
摘要:不完整类型是一种用于描述标识符但缺少确定该标识符的大小所需的信息的类型。 “不完整类型”可以是: 您尚未指定其成员的结构类型。 您尚未指定其成员的联合类型。 您尚未指定其维度的数组类型。 您尚未指定其成员的结构类型。 您尚未指定其成员的联合类型。 您尚未指定其维度的数组类型。 void 类型是无法完 阅读全文
posted @ 2018-03-29 19:03 zzfx 阅读(298) 评论(0) 推荐(0) 编辑
摘要:另外:前向声明中引入的类型为不完全类型(incomplete type),不完全类型只能以有限方式使用,只能用于定义指向该对象的指针和引用,只能用于声明使用该类型作为形参或返回类型的函数。 Incomplete types[edit] An incomplete type is a structur 阅读全文
posted @ 2018-03-29 19:00 zzfx 阅读(697) 评论(0) 推荐(0) 编辑
摘要:只声明却没有定义的类称为—————–不完全类型,不完全类型不能定义该类型的对象,只能用于定义指向该类型的指针及引用,或者用于声明(不是定义)使用该类型作为形参类型或返回类型的函数。 在创建类的对象之前,必须完整地定义该类。必须定义,而不是声明类,这样,编译器就会给类的对象预定相应的存储空间。同样的, 阅读全文
posted @ 2018-03-29 18:59 zzfx 阅读(680) 评论(0) 推荐(0) 编辑
摘要:本质:将成员函数与对象数据进行剥离。 从编程语言的角度看,面向对象是将数据和对数据的操作进行了绑定; 调用对象成员函数,本质是对对象的数据进行操作;对象作为缺省参数传进成员函数,从而完成操作。 从面向对象转化成面向结构编程,需要对成员函数和对象数据进行解绑; 将对象以显式参量的形式传进转换后的函数, 阅读全文
posted @ 2018-01-19 15:40 zzfx 阅读(567) 评论(0) 推荐(0) 编辑
摘要:调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。 1、__stdcall调用约定:函数的参数自右向左通过栈传递 阅读全文
posted @ 2018-01-19 15:26 zzfx 阅读(454) 评论(0) 推荐(0) 编辑
摘要:函数调用约定描述了如何以正确的方式调用某些特定类型的函数。包括了函数参数在栈上的分配顺序、有哪些参数将通过寄存器传入,以及在函数返回时函数栈的回收方式等。 函数调用约定的几种类型 stdcall,cdecl,fastcall,thiscall,nakedcall,pascal stdcall调用约定 阅读全文
posted @ 2018-01-19 15:23 zzfx 阅读(1051) 评论(0) 推荐(0) 编辑
摘要:关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。 VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调用方式,在 DLL 导出函数中,为了跟 Windows API保持一致,建议使用 __stdcall 阅读全文
posted @ 2018-01-19 15:20 zzfx 阅读(303) 评论(0) 推荐(0) 编辑
摘要:In computer programming, run-time type information or run-time type identification (RTTI)[1] refers to a C++ mechanism that exposes information about 阅读全文
posted @ 2018-01-18 15:46 zzfx 阅读(360) 评论(0) 推荐(0) 编辑
摘要:C++中的虚函数(Virtual Function)是用来实现动态多态性的,指的是当基类指针指向其派生类实例时,可以用基类指针调用派生类中的成员函数。如果基类指针指向不同的派生类,则它调用同一个函数就可以实现不同的逻辑,这种机制可以让基类指针有“多种形态”,它的实现依赖于虚函数表。虚函数表(Virt 阅读全文
posted @ 2018-01-17 22:03 zzfx 阅读(380) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/chaoguo1234/archive/2013/05/19/3079078.html 在c++中,当一个类含有虚函数的时候,类就具有了多态性。构造函数的一项重要功能就是初始化vptr指针,这是保证多态性的关键步骤。 构造函数初始化vptr指针 下面是c 阅读全文
posted @ 2017-09-05 19:17 zzfx 阅读(169) 评论(0) 推荐(0) 编辑
摘要:http://blog.sina.com.cn/s/blog_6fd68d5f0100n60h.html 前言--构造函数、析构函数的简单理解:1)构造函数 对象被创建时候调用的函数;2)析构函数 对象被释放时候调用的函数;一 案例程序源代码//下面的代码为一个简单的VC++6.0下生成的控制台工程 阅读全文
posted @ 2017-09-05 19:10 zzfx 阅读(382) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/hunter8777/article/details/6327704 C++中的RAII全称是“Resource acquisition is initialization”,直译为“资源获取就是初始化”。但是这翻译并没有显示出这个惯用法的真正内涵。RAII 阅读全文
posted @ 2017-07-27 19:34 zzfx 阅读(532) 评论(0) 推荐(0) 编辑
摘要:http://www.jellythink.com/archives/101 前言 在写C++设计模式——单例模式的时候,在写到实例销毁时,设计的GC类是很巧妙的,而这一巧妙的设计就是根据当对象的生命周期结束时会自动调用其析构函数的,而这一巧妙的设计也是有专业的名词的——RAII。那以下将围绕RAI 阅读全文
posted @ 2017-07-27 19:33 zzfx 阅读(454) 评论(0) 推荐(0) 编辑
摘要:#define try if(!setjmp(Jump_Buffer)) 返回try现场后重新执行判断,所以有两次执行。 http://blog.csdn.net/tian_dao_chou_qin/article/details/6386621 1.概述 什么是异常?异常一般指的是程序运行期(Ru 阅读全文
posted @ 2017-07-27 18:46 zzfx 阅读(1930) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/lihao21/article/details/47610309 Pimpl(pointer to implementation, 指向实现的指针)是一种常用的,用来对“类的接口与实现”进行解耦的方法。这个技巧可以避免在头文件中暴露私有细节(见下图1),因此 阅读全文
posted @ 2017-07-27 18:16 zzfx 阅读(463) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/bonchoix/article/details/8046727 一个函数如果说是“异常安全”的,必须同时满足以下两个条件:1.不泄漏任何资源;2.不允许破坏数据。 我们先通过两个反面的例子开始。 第一个是造成资源泄漏的例子。一个类Type,内含一个互斥锁成 阅读全文
posted @ 2017-07-27 16:47 zzfx 阅读(407) 评论(0) 推荐(1) 编辑
摘要:http://blog.csdn.net/xingkong_678/article/details/38639847 关于两者以前的关系,要从N年以前说起了~ long long ago,once aupon a time ....... 那是一个被 遗忘的年代,在编译器只认识.c(.cpp))文件 阅读全文
posted @ 2017-07-07 17:09 zzfx 阅读(952) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/luxiaoxun/p/3405374.html 1、导出C函数以用于C或C++的项目 如果使用C语言编写的DLL,希望从中导出函数给C或C++的模块访问,则应使用 __cplusplus 预处理器宏确定正在编译的语言。如果是从C++语言模块使用,则用C 阅读全文
posted @ 2017-07-07 16:48 zzfx 阅读(279) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/chengmin/archive/2011/09/26/2192008.html 用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字,如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h 阅读全文
posted @ 2017-07-07 16:47 zzfx 阅读(484) 评论(0) 推荐(0) 编辑