C++
文章平均质量分 62
xsh_123321
这个作者很懒,什么都没留下…
展开
-
构造函数,静态函数可不可以为虚函数
答案是否定的。我们从以下两个方面进行分析:1.技术方面虚函数的实现依靠的是类对象中的虚指针,但是当调用构造函数调用的时候,对象还没有产生,无从谈起虚指针的存在。2.存在意义构造函数的作用是提供初始化,在对象生命期只执行一次,不是对象的动态行为,也没有太大的必要成为虚函数原创 2010-09-09 17:46:00 · 2285 阅读 · 0 评论 -
类static 成员变量,const成员变量,static const 成员变量
class Test{int a = 0;// 1 error.const int a = 0; //2 error.static int a = 0; //3 error.static const a = 0; //4 ok. int/char等可以进行就地初始化,是因为这些变量可以直接被优化为立即数.};以上四种变量的定义方式只有4是正确的,原因如下:error 1:编译器对每个包含该头文件的源文件编译,导致生成多个a的导出符号,则会导致duplicated external simbols。因此如果头原创 2010-09-07 11:43:00 · 1284 阅读 · 1 评论 -
字节对齐
一. 字节对齐的作用和原因: 各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐,其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那 么一个读周期就可以读出这32bit,而如果存放在奇地址开始转载 2010-09-17 16:45:00 · 715 阅读 · 0 评论 -
C++强制类型转换
1.C强制类型转换(T) expression // cast expression to be of type T2.C++标准强制类型转换static_cast、dynamic_cast、reinterpret_cast、const_cast各自用法如下:1)static_cast用法:static_cast ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:a.用于类层次结构中基类和子类的转换。b.进行u原创 2010-10-09 11:16:00 · 807 阅读 · 0 评论 -
C++ 异常处理
一、 概述 C++自身有着非常强的纠错能力,发展到如今,已经建立了比较完善的异常处理机制。C++的异常情况无非两种,一种是语法错误,即程序中出现了错误的语句,函数,结构和类,致使编译程序无法进行。另一种是运行时发生的错误,一般与算法有关。 关于语法错误,不必多说,写代码时心细一点就可以解决。C++编译器的报错机制可以让我们轻松地解决这些错误。 第二种是运行时的错误,常见的有文件打开失败、数组下标溢出、系统内存不足等等。而一旦出现这些问题,引发算法失效、程序运行时无故停止等故障也是常有的。这就要求我们在转载 2010-10-09 11:30:00 · 871 阅读 · 0 评论 -
C++虚继承对象模型
1.为什么需要虚继承如下图所示如果访问Der::Fun or Der::m_nValue就会带来二义性,无法确定是调用Base1的还是Base2的,所以为了解决多重继承情况下成员访问的二义性,引入了虚继承机制。一般继承 虚继承2.虚继承实现在虚继承下,Der通过共享虚基类SuperBase来避免二义性,在Base1,Base2中分别保存虚基类指针,Der继承Ba原创 2010-10-21 12:36:00 · 4140 阅读 · 2 评论