C++
文章平均质量分 66
omegayy
这个作者很懒,什么都没留下…
展开
-
结构体内存对齐问题
当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密。 首先,至少有一点可以肯定,那就是ANSI C保证结构体中各字段在内存中出现的位置是随它们的声明顺序依次递增的,并且第一个字段的首地址等于整个结转载 2012-01-12 23:43:33 · 2884 阅读 · 1 评论 -
C++多重继承相关问题
多重继承的问题,首先想到多继承构造函数如何处理? Symbian下是可以一个C类多个M类多重继承的 C++中的多继承,构造函数处理并没有问题,对象构造的时候按照继承中声明的顺序调用多个父类的构造函数,析构函数同样遵守单继承中的原则。二意性问题 如果多基类中存在同名成员,会产生二意性的问题 比如,Root1类中声明DoAny()接口,Root2类中也声明了DoAny()接原创 2012-02-10 18:03:27 · 6275 阅读 · 0 评论 -
C++中struct与class的区别
原地址:http://blog.csdn.net/nocky/article/details/6195556很多初学者或者是想当然,或者是被网上的一些错误信息给误导,面试中问到class和struct区别时经常会说class可以继承而struct不可以继承,这是完全错误的。但在C#中,class与struct确实有这点区别(当然不止这一点)。其实,在C++中,这两个关键词并没有转载 2012-04-17 16:56:17 · 10890 阅读 · 0 评论 -
C++函数重载
1. 概述如果两个函数名字相同并且在相同的域中被声明,但是参数表不同,则它们就是重载函数overloadedfunction。 1.1 重载函数条件参数类型或参数个数不同。返回值不同不能视为重载。是否为常函数不能视为重载对于普通类型参数只有const、volatile区别不能视为重载,但是如果参数是指针或 引用类型,那么const、volatile的区别视为重载原创 2012-04-17 22:36:14 · 8627 阅读 · 1 评论 -
基础考查的面试、笔试题
1. 指针和引用有什么区别?引用必须被初始化,指针则不必存在空指针,但不存在空引用 因为引用相对安全引用被赋值后不能修改为其它实例的引用,指针被赋值后可以指向其它指针。2. 堆栈溢出一般是由什么原因引起的?没做内存释放,递归调用层次过深。————————————————————详细了解一下调用堆栈的知识。3. 什么函数不能声明为虚函数?必须是类的成员函数,像静态函数原创 2012-03-26 11:25:00 · 2449 阅读 · 0 评论 -
__FUNCTION__宏引发的字符串有关问题
今天想要用__FUNCTION__宏做打印输出,可是搞了半天和char*、char[10]、const char等等有关的问题。 把我搞糊涂了,可以用:format("function = %S", __FUNCTION__); 但是,我用了各种方法想要把__FUNCTION__值赋值到char相关的字符串上,但是怎么也不能成功。。。要细致的看一看。 这种情况应该果断做强转,原创 2012-02-13 16:03:42 · 1769 阅读 · 0 评论 -
引用计数+智能指针的自析构类 (一)基本实现
主要思路,对来值ref(refcount + 1),对去值deref(refcount - 1),这样不需手动做ref、deref操作就能合理的管理引用计数值。 以下是more effective c++中智能指针+引用计数的实现,它的组成为: 1. RCObject,引用计数类的基类,它封装了refcount +、- 操作ref()、deref()。无需其它额外操作。 2. R原创 2012-02-13 17:57:58 · 1377 阅读 · 0 评论 -
C++构造函数调用,自动类型转换
主要讲自定义类型中的自动类型转换原则。 class SomeTest {public: SomeTest(int i); virtual ~SomeTest(); }; 如上类型定义,有一个有意思的现象: SomeTest test = 5; 上面语句编译正常,不报错,为什么呢?? 原因很简单: 1. 编译器发现类型不匹配,需要做类型转换,先查查看看原创 2012-02-13 14:01:49 · 1815 阅读 · 2 评论 -
符点数运算,值的精度问题
今天实际应用中还真遇到了有关浮点数精度的问题,下面为问题概括代码: float num = 1.15; float test = num * 100; int test1 = test; int test2 = num * 100; 能看出test1和test2的值之间有什么差别吗?它们的值分别是115和114,什么原因呢? 不同类型运算会自动进行类型原创 2012-02-09 15:53:52 · 1172 阅读 · 0 评论 -
关于Volatile修饰符
这篇总结就是目前做了解知识,我还没有做过太多的相关实际应用。1. 概述就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。 2. 深入以下是百度百科中的资料:原创 2012-04-17 22:45:23 · 4966 阅读 · 0 评论