![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
FrankyT1986
这个作者很懒,什么都没留下…
展开
-
_stdcall 与 _cdecl
几乎我们写的每一个WINDOWS API函数都是__stdcall类型的,首先,需要了解两者之间的区别: WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清除,这里就是问题的关键,如何清除?? 如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完成的。这样带来了一个棘手的问题,不同的编转载 2012-04-28 16:27:10 · 237 阅读 · 0 评论 -
合成析构函数和析构函数
今天看《c++ primer》的时候,突然看到合成析构函数这个名词,对析构函数了解的多点,对合成析构函数则了解的不多。析构函数特点:1.整个类只有一个,即不能重载;2.没有形参;3.没有返回值;4.不能被继承(继承的是成员变量和成员函数,个人理解严格说这些构造函数,析构函数不能称之为“函数”,因为不符合函数定义的特征,所以构造函数,析构函数不能被继承)5.可以手动调用(不理转载 2012-05-03 21:05:15 · 1943 阅读 · 0 评论 -
4种强制类型转换
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cas转载 2012-05-03 16:03:28 · 428 阅读 · 0 评论 -
虚基类相关知识
虚基类的知识点整理:几个注意点:(1)如果在虚基类中定义了带有参数的构造函数,且没有定义默认形式的构造函数,则在整个继承过程中,所有直接或间接的派生类都必须在构造函数的成员初始化表中列出对虚基类构造函数的调用;(2)建立一个对象时,如果这个对象中含有从虚基类继承来的成员,则虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的,该派生类的其他基类对虚基类的调用构造函数则被忽略原创 2012-07-19 17:22:01 · 992 阅读 · 0 评论 -
C++对象的内存分布和虚函数表
c++中一个类中无非有四种成员:静态数据成员和非静态数据成员,静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来放在程序的静态数据区内,为该类所有对象共享,因此只存在一份。 3.静态和非静态成员函数最终都被提取出来放在程序的代码段中并为该类所有对象共享,因此每一个成员函数也只能存在一份代码实体。在c+转载 2012-07-20 11:14:36 · 355 阅读 · 0 评论 -
虚析构函数与非虚析构函数问题!
class A{public: virtual ~A() { cout }};class B:public A{public: virtual ~B() { cout }};int main(){ A*a = new B(); delete a; return 0;}这种情况下,输出结果我们都知道,转载 2012-07-20 11:54:33 · 422 阅读 · 0 评论