![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
pathuang68
桃李不言,下自成蹊。
展开
-
C++类中的4个特殊函数 - 缺省构造函数、拷贝构造函数、拷贝赋值操作符和析构函数
由于CSDN长时间无法显示图片,本文已暂时迁移到:http://patmusing.blog.163.com/blog/static/1358349602009113061024796/原创 2009-04-14 09:50:00 · 6044 阅读 · 6 评论 -
C/C++中指针和引用之相关问题研究
由于CSDN长时间无法显示图片,本文已暂时迁移到:http://patmusing.blog.163.com/blog/static/135834960200911308413342/原创 2009-04-14 10:06:00 · 9104 阅读 · 12 评论 -
虚函数在对象中的内存布局
本文发表在:http://patmusing.blog.163.com/blog/static/13583496020103255219855/原创 2009-04-20 23:38:00 · 3343 阅读 · 4 评论 -
C++是如何利用虚函数实现多态性的?
*前篇:http://blog.csdn.net/pathuang68/archive/2009/04/21/4096429.aspx 还是先看示例程序,用代码说话:#include using namespace std; class A{public: inline virtual vfun()原创 2009-04-21 09:37:00 · 7008 阅读 · 8 评论 -
关于内存对齐问题
由于CSDN长时间无法显示图片,本文已暂时迁移到:http://patmusing.blog.163.com/blog/static/13583496020100143952257/原创 2009-04-18 02:40:00 · 1503 阅读 · 4 评论 -
一个进程在内存中的布局
由于CSDN长时间无法显示图片,本文已暂时迁移到:http://patmusing.blog.163.com/blog/static/135834960201001512358686/原创 2009-04-18 20:56:00 · 6946 阅读 · 6 评论 -
C++虚继承防止二义性
本文发表在:http://patmusing.blog.163.com/blog/static/135834960201032527733/原创 2009-04-20 23:05:00 · 1718 阅读 · 0 评论 -
怎样获得虚函数的指针
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/20/4096088.aspx 本文发表在:http://patmusing.blog.163.com/blog/static/1358349602010419111919799/原创 2009-04-21 09:06:00 · 2959 阅读 · 8 评论 -
运算符重载小结
由于CSDN长时间无法显示图片,本文已暂时迁移到:http://patmusing.blog.163.com/blog/static/135834960201001410555209/原创 2009-04-17 10:19:00 · 1865 阅读 · 4 评论 -
再谈带有虚函数的类对象之内存结构
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/21/4096521.aspx 下面的代码中,类Base中定义了两个虚函数vfBase_1()和vfBase_2(),另外还定义了一个整形成员变量m_base;#include using namespace std; class Base{public:原创 2009-04-21 11:05:00 · 1599 阅读 · 5 评论 -
对象内存布局 (2)
内容概要:满足下面2个条件时,1. 父类有虚函数,子类也有虚函数,但子类并没有重写或覆盖父类的虚函数2. 非虚继承类对象之内存布局 续前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4101970.aspx 如果在Derived类中增加一个下面的虚函数,会怎么样呢?Base类和Derived类之间的关系如下原创 2009-04-23 00:40:00 · 4358 阅读 · 15 评论 -
对象内存布局 (8)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4102003.aspx 在内存对象布局 (5)的代码中,在Derived类中将三个基类中的虚函数分别覆盖一个,即分别覆盖Base1中声明的vfBase1_1(),Base2中声明的vfBase2_1()以及Base3中声明的vfBase3_1()。保持其他代码不变,修改后的Deri原创 2009-04-23 01:56:00 · 2455 阅读 · 0 评论 -
对象内存布局 (11)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4103627.aspx 在C++中,一个类实例化得到的结果就是一个对象。一个类包含成员变量和成员函数,其中成员变量又分为nonstatic成员变量和static成员变量;成员函数又可以分为nonstatic成员函数、static成员函数以及virtual成员函数。一个对象包含可能存原创 2009-04-24 08:40:00 · 3090 阅读 · 2 评论 -
对象内存布局 (12)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/24/4105608.aspx 注意:关于内存对齐(memory alignment),请看关于内存对齐问题,后面将会用到。 下面我们进行在普通继承(即非虚继承)时,派生类的指针转换到基类指针的情形研究。假定各类之间的关系如下图:代码如下:#include原创 2009-04-24 08:49:00 · 3178 阅读 · 6 评论 -
对象内存布局 (3)
内容概要:满足下面2个条件时,1. 父类无虚函数,子类有虚函数2. 非虚继承类对象之内存布局 前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4101977.aspx 如果将Base中的两个虚函数删除,情况有会怎么样呢?将Base中的两个虚函数删除,其他保持不变。Base类和Derived类两者之间的关原创 2009-04-23 00:47:00 · 3089 阅读 · 3 评论 -
对象内存布局 (7)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4102002.aspx 在对象内存布局 (5)的代码中,在Derived类中覆盖Base1中声明的vfBase1_1(),其他代码不变。修改后的Derived的定义如下:class Derived : public Base1, public Base2, public Bas原创 2009-04-23 01:52:00 · 2445 阅读 · 1 评论 -
对象内存布局 (1)
内容概要:满足下面2个条件时,1. 父类有虚函数,子类无虚函数(即无虚函数重写或无虚函数覆盖)2. 非虚继承类对象之内存布局 前述相关内容参考:1. http://blog.csdn.net/pathuang68/archive/2009/04/20/4096088.aspx2. http://blog.csdn.net/pathuang68/archive/200原创 2009-04-23 00:31:00 · 9555 阅读 · 5 评论 -
对象内存布局 (5)
内容概要:满足下面3个条件时,1. 父类有虚函数,子类也有虚函数,且子类的虚函数重写或覆盖了父类的虚函数2. 非虚继承3. 多重继承类对象之内存布局 前篇: http://blog.csdn.net/pathuang68/archive/2009/04/23/4101981.aspx 多重继承,派生类不重写基类中的虚函数。假定各类之间的关系如下图:原创 2009-04-23 01:38:00 · 2853 阅读 · 6 评论 -
对象内存布局 (6)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4101999.aspx 如果在对象内存布局 (5)的代码中,将Base1中的两个虚函数声明删除,同时将main函数中的下面代码注释掉(因为现在只有两张虚函数表了): cout i = 0; tmp = ((int*)&d)原创 2009-04-23 01:45:00 · 2410 阅读 · 0 评论 -
对象内存布局 (9)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4102006.aspx 假定多层继承的各类之间的关系如下图。假定派生类不override基类的虚函数,即Base2不override Base1中声明的虚函数vfBase1(),Base3不override Base2中声明的虚函数vfBase2(),Derived不overrid原创 2009-04-23 15:42:00 · 2417 阅读 · 2 评论 -
对象内存布局 (10)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/23/4103581.aspx 在对象内存布局 (9)基础上做些修改:派生类override基类的虚函数,即Base2 override Base1中声明的虚函数vfBase1(),Base3 override Base1中声明的虚函数vfBase1()和Base2中声明的虚函数vf原创 2009-04-23 15:49:00 · 2525 阅读 · 0 评论 -
对象内存布局 (14)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/24/4105810.aspx 继续探讨虚基类对对象内存布局的影响。几个类的继承关系如下图,这是虚基类最为常见的用法之一: 代码如下:#include using namespace std; class Base{public: int原创 2009-04-24 09:50:00 · 2912 阅读 · 3 评论 -
对象内存布局 (13)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/24/4105626.aspx 下面来看看虚基类对对象内存布局的影响。虚基类的主要作用就是在所有的派生类中,保留且仅保留一份虚基类的suboject。 a. 一个虚基类的情况#include using namespace std; class Base{p原创 2009-04-24 09:41:00 · 3901 阅读 · 10 评论 -
对象内存布局 (15)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/24/4105851.aspx 和对象内存布局 (14)差不多,只是改动了两个继承关系。几个类的继承关系如下图,这种继承方式不是很有实际意义,在此纯粹是探究类的memory layout。 代码如下:#include using namespace std;原创 2009-04-24 09:58:00 · 3954 阅读 · 10 评论 -
对象内存布局 (16)
前篇:http://blog.csdn.net/pathuang68/archive/2009/04/24/4105902.aspx 下面讨论虚基类和虚函数同时存在的时候,对对象内存布局的影响。假定各个类之间的关系如下图: Base中声明了一个虚函数vfBase()和一个整形成员变量;Derived1 override了Base中声明的虚函数vfBase(),声明了一个虚原创 2009-04-24 10:04:00 · 2999 阅读 · 7 评论 -
再谈内存对齐问题
由于CSDN长时间无法显示图片,本文已暂时迁移到:http://patmusing.blog.163.com/blog/static/135834960201001432110804/原创 2009-04-24 10:22:00 · 1988 阅读 · 4 评论 -
Shallow Copy,Deep Copy,Bitwise Copy和Memberwise Copy
在网上看到很多朋友对Shallow Copy,Deep Copy,Bitwise Copy和Memberwise Copy这4者之间的关系的理解多有混淆,Stanley Lippman的“Inside the C++ Object Model”的讲解也比较晦涩难懂。玄机逸士在此给出一个简单的、明确的说明:)。请各位硕学高贤指正。 Java中的Clone也有浅克隆和深克隆之分,分别对应C++原创 2009-04-24 11:46:00 · 2300 阅读 · 1 评论 -
区别:static _cast、dynamic _cast、reinterpret_cast和const_cast
本文发表在:http://patmusing.blog.163.com/blog/static/13583496020103243210628/原创 2009-04-26 20:29:00 · 5473 阅读 · 1 评论 -
类成员变量初始化列表(Member Initialization List)
1) 类成员初始化列表的顺序是很重要的#include using namespace std; class MemberInitializationList{private: int i; int j;public: MemberInitializationList(int val) : j(val), i(原创 2009-05-05 20:02:00 · 3650 阅读 · 0 评论 -
虚析构函数问题:为什么要将基类的的析构函数设成虚的?
某CSDN网友问:class A { public: ~A() { cout } }; class B:public A { public: virtual ~B() { cout } }; class C:public B { public: ~C() { cout } }原创 2009-05-07 00:26:00 · 8616 阅读 · 20 评论 -
CALLBACK, WINAPI, AFXAPI和函数调用方式
本文发表在:http://patmusing.blog.163.com/blog/static/13583496020103233446784/原创 2009-05-05 20:36:00 · 3122 阅读 · 1 评论 -
快速离散余弦变换代码实现(FDCT)
网上常见的快速离散余弦变换的代码如下:#include using namespace std;#define DCTSIZE 8void FDCT(double* lpBuff){ double tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; double tmp10, tmp11, tmp12, tmp13; double z1原创 2009-05-19 08:34:00 · 11541 阅读 · 8 评论 -
static关键字
C/C++中的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类的问题。A. 面向过程程序设计中的static关键字1) 静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。静态全局变量定义和使用类似: #inclu原创 2009-05-17 01:31:00 · 5805 阅读 · 10 评论 -
求逆矩阵以及两矩阵相乘的算法实现
下面的程序借鉴了多位高贤的代码,玄机逸士加以整理和修改而成。 // matrixcomputation.h//计算行列式,参数一为存储行列式的数组,参数二为阶数double calculateDeterminant(double *p,int n);// 使用Gauss-Jordan消去法求n阶实矩阵的逆矩阵// 返回结果存放在a中,n是矩阵的阶数int inverseMatrix原创 2009-05-19 21:45:00 · 11811 阅读 · 1 评论 -
MFC中的类和Windows中的3种消息类型的关系
原创 2009-05-27 10:41:00 · 1072 阅读 · 0 评论 -
例解BITMAP的数据格式
说明:由于这里不能上传bitmap图像,我将用到的3个bitmap图片(红色字体,第2、3两图是24bit的位图)文件放在:http://download.csdn.net/source/1377107。请下载(忘记设定不需要资源分了,需要1个资源分)后,对照本文阅读。Bitmaps should be saved in a file that uses the established bit原创 2009-05-27 10:52:00 · 11440 阅读 · 2 评论 -
利用共享内存实现进程之间的通讯
进程之间数据的共享可以用共用内存实现,在Win32中,进程之间共享内存使用的事映射文件。虚拟内存系统具有把实际内存映射到页文件或者交换文件的能力。用户可以把内存映射到任何的映射文件中,包括系统内存页。而利用系统内存页可以实现快捷的内存共享。利用共有内存实现进程之间的数据共享共有两步:一. 使用CreateFileMapping函数创建内存映射文件。此函数需要文件句柄,对于大多数的内存原创 2009-05-27 11:02:00 · 1582 阅读 · 1 评论 -
设备坐标和逻辑坐标
要用到两个函数:CDC::LPtoDP 将逻辑坐标转换为设备坐标CDC::DPtoLP 将设备坐标转换为逻辑坐标 设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设备坐标的X轴原创 2009-05-27 10:48:00 · 13653 阅读 · 5 评论 -
三谈内存对齐问题
由于CSDN长时间无法显示图片,本文已暂时迁移到:http://patmusing.blog.163.com/blog/static/135834960201001432528600/原创 2009-06-03 21:48:00 · 1366 阅读 · 1 评论 -
STL中的map和multimap
某网友提问:“0000172009010199999999001 他们对应的结构体是id[7];date[9],date[9];item[4] 0000202009010299999999001 这是一个纯文本文件,名字叫info(d:/info) 0000222009010399999999003 00002320090104999999990原创 2009-06-06 20:21:00 · 6363 阅读 · 4 评论