C++
文章平均质量分 64
zhaojj1988
这个作者很懒,什么都没留下…
展开
-
VirtualAlloc函数使用总结
如果我们的程序需要动态内存的话,则迟早会调用Win32函数VirtualAlloc。但是程序也可以不调用VirtualAlloc,而是直接调用Windows堆函数或者CRT堆函数。不过,知道VirtualAlloc如何工作,可以帮助我们更好地理解这些调用函数。 首先,必须知道保留(Reserved)内存和占用(Committed)内存的含义。当内存放保留时,一段连续虚拟地址空间被留出转载 2012-08-02 10:32:45 · 1598 阅读 · 0 评论 -
虚函数使用注意事项
转载自:昵称:welkinwalker定义:虚函数就是给函数的前边加上virtual就可以了,虚函数必须是非静态的成员函数, 没有继承特性的函数不能为虚函数。 作用:虚函数主要是为了实现动态联编,也可以说是多态。在基类当中定义了虚函数,可以 再子类中定义和基类中相同函数名、相同参数、相同返回值和不同实现体的虚函数,(只要在基类中定义成为虚转载 2013-09-25 16:07:08 · 3281 阅读 · 0 评论 -
volatile关键字 说明
转载自:冀博目录(?)[+]一前言二volatile详解一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一转载 2013-09-25 09:57:03 · 1183 阅读 · 0 评论 -
林锐高质量编程中的几道面试题
内存的思考在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字与C 语言的不同。假设某个函数的原型为: void foo(int x, int y);该函数被C 编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int 之类的名字。C++提供了原创 2013-09-20 11:06:10 · 2822 阅读 · 0 评论 -
数组指针、指针数组、指针函数、函数指针比较
转载自:hongcha_717注:优先级关系:() > [ ] > *数组指针:定义 int (*p)[n],()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一数组指针,应这样赋值:int a[3][4];int转载 2013-10-03 10:29:05 · 1437 阅读 · 0 评论 -
重载与覆盖区别---常考面试题
一句话总结: 重载一般在同一个类中发生,方法名字相同但参数类型与个数不同,返回类型与修饰符也可以不同。 方法重写发生在父类与子类之间,两个类存在继承关系,方法重写时方法的定义(修饰符,返回类型,参数列表)必须相同,只是方法体(方法实现)不同。 重载:重载(overload),它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,原创 2013-06-27 21:01:42 · 2101 阅读 · 0 评论 -
百度面试题:宏的概念,与函数的区别,优缺点的比较。
宏宏概念:C++ 宏定义将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替。宏书写形式:#define () 宏与函数的区别:时间上考虑:1:宏只占编译时间,函数调用则占用运行时间(分配单元,保存现场,值传递,返回),每次执行都要载入,所以执行相对宏会较慢。2:使用宏次数多时,宏展开后源程序很长,因为每展开一次都使程序增长,但是执行起原创 2013-06-22 19:55:15 · 3342 阅读 · 0 评论 -
构造函数和析构函数能否声明为虚函数?
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:解释一:所谓虚函数就是多态情况下只执行一个。而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象。如果构造函数设为虚函数,那么当你在构造父类的构造函数时就不得不显示的调用构造。还有一个原因就是为了防错,试想如果你在子类中转载 2013-06-18 12:19:49 · 943 阅读 · 0 评论 -
c++中的虚函数和多态之间的关系
1.简介 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public: virtual void foo() { cout };class B: public A{public: virtual void foo() { cout转载 2013-06-18 15:01:57 · 1258 阅读 · 0 评论 -
C++成员变量的初始化顺序问题
问题来源:由于面试题中,考官出了一道简单的程序输出结果值的题:如下,class A{private: int n1; int n2; public: A():n2(0),n1(n2+2){} void Print(){ cout << "n1:" << n1 << ", n2: " << n2 <<endl; }};int main(){ A a原创 2013-04-11 09:29:47 · 23278 阅读 · 7 评论 -
指针辨析:悬垂指针、哑指针、野指针、智能指针
悬垂指针: 1:提出的原因:请看下面的代码片段:int *p=NULL;void main(){ int i=10;p=&i; cout<<"第一次:*p = "<<*p<<endl; cout<<"第二次:*p = "<<*p<<endl;}int *p=NULL;void fun(){int i=10转载 2013-04-08 19:08:27 · 12470 阅读 · 4 评论 -
C与C++的内存分配方式比较
1、malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2、对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任转载 2012-10-29 20:36:50 · 1820 阅读 · 0 评论 -
堆和栈的区别(转过无数次的文章)
本文转载自:http://blog.csdn.net/hairetz/article/details/4141043 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap)转载 2012-08-02 09:25:15 · 460 阅读 · 0 评论 -
C/C++语言 常用头文件函数
头文件 ctype.h字符处理函数: 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换----------------------------------------字符测试是否字母和数字 isalnum是否字母 isalpha是否控制字符 iscntrl是否数字 isdigit是否可显示字符(除空格外) isgraph是否可显示字符(包括空格转载 2012-08-05 16:11:00 · 1060 阅读 · 0 评论 -
浮点数比较
在数学运算当中经常会涉及到判断两个数是否相等的情况对于整数很好处理 A==B这样的一个语句就可以解决全部的问题但是对于浮点数是不同的首先,浮点数在计算机当中的二进制表达方式就决定了大多数浮点数都是无法精确的表达的现在的计算机大部分都是数字计算机,不是模拟机,数字机的离散化的数据表示方法自然无法精确表达大部分的数据量的。其次计算机浮点数的精度在单精度float类型下,只有转载 2012-08-02 14:32:32 · 2649 阅读 · 0 评论 -
malloc/free和new/delete 区别
转载自:共同点:申请和释放动态内存空间的区别:1:malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。2:操作对象范围不同。对于非内部数据类的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象消亡之前要自动执行析构函数。这是由于malloc/free 是库函数而不是运算符,不在编译器控转载 2013-09-26 11:06:35 · 1064 阅读 · 0 评论