C++语言
wwwdongzi
这个作者很懒,什么都没留下…
展开
-
腾讯2011一道父类指针和子类指针转化的题目
class ClassA{public: virtual ~ClassA(){} virtual void FunctionA(){}};class ClassB{public: virtual void FunctionB(){}};class ClassC :public ClassA , public ClassB {}原创 2014-09-07 20:29:00 · 815 阅读 · 0 评论 -
关于内联函数的几点总结以及构造析构是否可以是inline的
为什么要引入内联函数(内联函数的作用) 用它替代宏定义,消除宏定义的缺点。宏定义使用预处理器实现,做一些简单的字符替换因此不能进行参数有效性的检测。另外它的返回值不能被强制转换为可转换的合适类型,且C++中引入了类及类的访问控制,在涉及到类的保护成员和私有成员就不能用宏定义来操作。1、内联函数与宏定义的区别:内联函数在编译时展开,可以做一些类型检测处理。宏在预编译时展原创 2014-08-13 23:50:43 · 1596 阅读 · 0 评论 -
用C语言实现面向对象
1、 概述C语言是一种面向过程的程序设计语言,而C++是在C语言基础上衍生来了的面向对象的语言,实际上,很多C++实现的底层是用C语言实现的,如在Visual C++中的Interface其实就是struct,查找Interface的定义,你可以发现有这样的宏定义:#ifndef Interface#define Interface struct#endifC++在语言级转载 2014-08-12 15:24:22 · 570 阅读 · 0 评论 -
改变const值的方式
一种改变const值的方式是使用const_cast类型转换符,将const变量转换为一个该变量的引用,通过这个引用去改变值,这种方法的实质就是用地址改变内存的值。如下实例: struct SA { int i = 0; }; const SA sa; cout SA &sb =原创 2014-09-10 10:18:48 · 1246 阅读 · 0 评论 -
程序在内存中的分布
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从低地址到高地址,可分为下面几段: 预留内存地址(操作系统维护的内存地址,不可访问) 程序代码区(只读,存代码和一转载 2014-08-29 08:54:31 · 474 阅读 · 0 评论 -
关于C++中虚函数表的几点总结
虚函数表在继承层次中比较复杂,总结重要的几点如下:1、虚函数指针一般在对象的开头或者结尾2、虚函数表其实就是一个函数指针类型的数组3、编译器如何知道虚函数表指针?答案是虚函数表的最后一个元素是NULL4、当从多个基类派生时,派生类继承所有基类的虚函数指针5、虚函数表是类级别的,类的所有对象共享同一个虚函数表6、不同的类的对象有不同的虚函数表7、在继承中,子类增加一个虚函原创 2014-08-30 20:27:14 · 767 阅读 · 0 评论 -
C与C++的不兼容性
C++是C语言的超集,虽然C++兼容C,但是C++中也有与C语言中不兼容的地方。一、变量声明的位置 C中变量声明和代码是分开的,必须在函数开始处声明; C++中,变量可以在任意处声明,只要保证先声名后使用的原则就可以。二、struct结构体方面 1、用struct定义变量 struct mystruct { int i;转载 2014-09-01 00:25:43 · 3663 阅读 · 0 评论