C++
理工科的杜小甫
这个作者很懒,什么都没留下…
展开
-
虚函数和纯虚函数
虚函数和纯虚函数 在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念。因为它充分体现了面向对象思想中的继承和多态性这两大特性,在C++语言里应用极广。比如在微软的MFC类库中,你会发现很多函数都有virtual关键字,也就是说,它们都是虚函数。难怪有人甚至称虚函数是C++语言的精髓。 那么,什么是虚函数呢,我们先来看看微软的解释: 虚函数是指一个类中你希望重载的原创 2016-06-11 20:52:46 · 369 阅读 · 0 评论 -
C和C++中struct的区别 以及C++中struct和class 以及c和c++区别 引用和指针
C和C++中struct的区别 C语言中无protection行为,其中不能定义函数,但可以有函数指针 c++中有protection行为,可以定义函数。C++中struct和class从语法上讲,class和struct做类型定义时只有两点区别: (一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理; (二)成员原创 2016-06-12 19:28:10 · 1002 阅读 · 0 评论 -
C++中virtual与inline Debug与Release选项 const 与 #define
C++中virtual与inline在基类成员函数的声明前加上virtual关键字,意味着将该成员函数声明为虚函数。inline与函数的定义体放在一起,使该函数称为内联。inline是一种用于实现的关键字,而不是用于声明的关键字。虚函数的特点;如果希望派生类能够重新定义基类的方法,则在基类中将该方法定义为虚方法,这样可以启用动态联编。内联函数的特点;使用内联函数的目的是为了提高函数的运行原创 2016-06-12 19:35:32 · 679 阅读 · 0 评论 -
malloc/free与 new/delete 内存的分配方式 多态类中的虚函数表 全局变量和局部变量
有了 malloc/free 为什么还要 new/delete?malloc 与 free 是 C++/C 语言的标准库函数,new/delete 是 C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运原创 2016-06-12 19:45:15 · 662 阅读 · 0 评论 -
Heap与stack const关键字的作用。
Heap与stack的差别 Heap是堆,stack是栈。Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。Stack空间有限,Heap是很大的自由存储区C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行const关键字?有哪些作用 con原创 2016-06-12 20:10:06 · 915 阅读 · 0 评论 -
(x&y)+((x^y)>>1)
对于位运算求两个数的平均值问题,(整形数据) int average(int x,int y) { return ( (x&y) + ( (x^y)>>1 ) ); } 给出两个整数,求出结果。 刚开始看到这道题的做法就是x和y转换为二进制,然后计算出结果。在没有办法的情况下这样做也可以得出结果。跟你想象的一点不差,这里确实有捷径。将a和b拆成两部分的平均值相加:a、b对应位相同部分,原创 2016-06-18 10:28:13 · 1640 阅读 · 0 评论 -
函数的重载、覆盖和隐藏
1、重载和覆盖 成员函数被重载的特征: (1) 相同的范围(在同一个类中)。 (2) 函数名字相同; (3) 参数不同; (4) virtual关键字可有可无; 覆盖是指派生类函数覆盖基类函数,特征是: (1) 不同的范围(分别位于派生类与基类) (2) 函数名字相同; (3) 参数相同; (4)基类函数必须有 virtual关键字; 2原创 2016-07-06 15:07:02 · 258 阅读 · 0 评论 -
C++抽象类
如果声明了一个类,一般可以用它定义对象。但是在面对对象程序设计中,往往有一些类,它们不用来生成对象。定义这些类的唯一目的就是用它作为基类去建立派生类。抽象类是为了抽象和设计的目的而建立的,处于继承层次结构的上层。具体类是能够建立对象的类。抽象类的规定(1)抽象类只能用作其他类的基类,不能建立抽象类对象。(2)抽象类不能用作参数类型、函数返回类型或显式转换的类型。(3)可以定义指向抽象类的指针和引用,原创 2016-07-19 18:33:58 · 1460 阅读 · 0 评论