
C++基础语法知识
moyedamo
这个作者很懒,什么都没留下…
展开
-
enum和宏定义的区别以及其使用
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。 (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。 (3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。(宏定原创 2014-04-21 17:04:40 · 1729 阅读 · 0 评论 -
为什么构造函数不能为虚函数
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。 2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数转载 2014-05-29 09:52:16 · 487 阅读 · 0 评论 -
volatile关键字的理解
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 使用该关键字的例子如下: 1 intvolatilenVint; 当要求使用vo原创 2014-05-26 09:27:39 · 363 阅读 · 0 评论 -
最全输入函数 c/c++
最全输入函数 c/c++ 一: c=getchar(); 功能:读入一个字符 说明:调用此函数时要求在程序的第一行有预编译命令:#include,不过在做c++时 有#include也够了。变量c获得一个从标准设备上读取的字符代码值。当从键 盘上输入^z(即CTRL和Z键同时按下)时,C得到的值是-1,^z称文件结尾,在程序中经 常使用符号常量EOF表示。 二: 字符原创 2014-06-26 14:08:43 · 345 阅读 · 0 评论 -
c++回调函数小demo和解释
在理解“回调函数”之前,首先讨论下函数指针的概念。 函数指针 (1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来存取函数,把这种指向函数入口地址的指针称为函数指针。 (2)先来看一个Hello World程转载 2014-05-23 14:49:23 · 593 阅读 · 0 评论 -
C++静态库和动态库
这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。 什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库转载 2014-05-23 09:09:18 · 293 阅读 · 0 评论 -
c/c++ 回调函数
C/C++回调函数一,回调函数 我们经常在 C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理 、用回调函数记录某操作进度等 )变得非常方便和符合逻辑 ,那么它的内在机制如何呢 ,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢? 使用回调函数实际上就是在调用某个函数(通常是 API 函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。 而那转载 2014-05-14 10:43:10 · 472 阅读 · 0 评论 -
C运行时库函数和API函数的区别和联系
C运行时库函数 C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的。 API函数 API函数是操作系统为方便用户设计应用程序而提供的实现特定功能的函数,API函数也是C语言的函数实现的。 区别 他们之间区别是:API函数是针对操作系统的,C语言运行时函数则是针对C语言本身的。 ======================================转载 2014-05-11 00:49:18 · 533 阅读 · 0 评论 -
内联函数和宏定义的区别
用内联取代宏: 1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。 文章(一) 内联函数与宏定义 在C中,常用预处理语句#define来代替一个函数定义。例如: #d转载 2014-05-16 15:58:44 · 367 阅读 · 0 评论 -
c++编译过程
编译过程主要分为4个过程 1) 编译预处理 预编译程序完成的工作,可以说成是对源程序的“替换”工作。经过这个过程,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。 宏定义命令;例如#define条件编译指令;例如#ifdef头文件包含指令;例如#include特殊符号;例如__LINE__,__FILE__预处理模块;例如#pragma 2) 编译、优原创 2014-05-09 09:14:03 · 248 阅读 · 0 评论 -
一些小的知识点(c++)
标准库用 注: 用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。 用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。原创 2014-04-30 23:19:43 · 384 阅读 · 0 评论 -
exten C 的作用
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有转载 2014-06-12 11:18:45 · 2268 阅读 · 0 评论