![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 77
simplebelief
这个作者很懒,什么都没留下…
展开
-
常成员变量数组初始化的问题
今晚在论坛里看到一篇帖子(http://topic.csdn.net/u/20100808/20/6d0557e2-62ca-4b5c-9f61-153206072de4.html),是关于常成员变量数组初始化的问题,以前碰到过这个问题,在网上搜了一下,只看到两种替代的方案。不知道可否真正实现常成员变量数组初始化,不管怎样,先在这里记一下:问题:如何给类的常成员变量数组初始化?时间:2010-08-08程序举例:class A{public: A(); const int原创 2010-08-08 22:09:00 · 2254 阅读 · 0 评论 -
常量折叠
C++编程思想翻译的“常量折叠”,迷惑了很多人,其实就是一种编译优化技术。编译器进行语法分析的时候,将常量表达式计算求值,并用求得的值来替换表达式,放入常量表。可以算作一种编译优化。转载 2010-08-19 20:28:00 · 572 阅读 · 0 评论 -
内存对齐
关于内存对齐的原因,大部分的参考资料都是如是说的: 1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。 2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。......本文最后讲述了内存对齐背后的故事。转载 2010-08-18 20:55:00 · 624 阅读 · 0 评论 -
C++中extern “C”含义
extern "C"包含双重含义,其一:被它修饰的目标是“extern”的;其二:被它修饰的目标是“C”的。 1)被extern “C”限定的函数或变量是extern类型的 extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其他模块中使用。 注意:extern int a; 仅仅是在声明一个变量,并不是定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接转载 2010-08-17 07:28:00 · 535 阅读 · 0 评论 -
指针数组、数组指针、常指针、指向常量的指针、指针函数、函数指针等概念的区分
关于指针、数组、常量等相关联的内容,常常有一些拗口又难以区分的概念,比如指针数组、数组指针、二重指针、二维数组、常指针、指向常量的指针、指针函数、函数指针、“函数指针类型”。本文给出了我自己对这些概念的理解,如有谬误之处,还望指正。原创 2010-08-26 20:28:00 · 2381 阅读 · 0 评论 -
调用约定
在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。转载 2011-03-13 09:51:00 · 643 阅读 · 0 评论 -
【转载】虚函数实现机制
<br />一、描述一<br />首先记住:只要在类的声明中出现虚函数(包括其父类中出现过),那么编译器就会为这个类产生一个虚函数表。这个表中的每一项指向一个虚函数, <br />当子类继承父类时,子类和父类各有一张虚函数表,刚一开始,子类的虚函数表与父类的是一样的,当子类重载父类中的某个虚函数时,就将子类自身的这张虚函数表中的这个虚函数指针作了改变,指向子类定义的函数。如果子类新增了某个虚函数,就在子类的虚函数表中增加一项。 <br />现在假设A1和A2都继承A,那么就有三张虚函数表了,在生成类对象时,转载 2011-05-17 19:29:00 · 798 阅读 · 0 评论