
C++
文章平均质量分 77
ether
在读研究生,努力学习!
展开
-
explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); // 用C风格的字符串p作为初始化值 //… } String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”); 但是有转载 2012-09-19 16:33:38 · 492 阅读 · 0 评论 -
C++内联函数 inline
介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如 #define TABLE_COMP(x) ((x)> 0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行转载 2012-10-20 18:28:05 · 1039 阅读 · 0 评论 -
c++ const用法总结
1. const修饰普通变量和指针 const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。 对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变。 例如: const int nV转载 2012-11-27 14:52:17 · 789 阅读 · 0 评论 -
char* 和char[] 内存分配的区别
char * s1 = "abcd"; s1[0] = 'm';//segment fault 上面代码在gcc下编译运行将报段错误。 然而, char s1[] = "abcd"; s1[0] = 'm'; 这段代码则能够正确运行。其中包含的原理是char* 和 char[],在内存分配上的机制差异。 对于char * s = "abcd";来说, 编译器会将字符串字面量原创 2012-11-29 21:37:12 · 7364 阅读 · 2 评论 -
c++ const常量的实现机制
const关键字的基本思想就是将一个变量变成常量,试图从语言设计者的角度去分析引入该关键字的动机。 我猜测原因如下: 1)提醒程序员,某些值是常量,如PI。或该值在程序运行期间是不变的,防止程序员误修改。对于多模块开发,头文件引用复杂的系统来说,这是很重要的,如果不能在编译期阻止常量被误修改,那么这些修改将引起运行时调试困难的问题。 2)改进c语言中的#define预处理宏,1)中提到的问题原创 2012-11-30 15:07:20 · 6275 阅读 · 0 评论 -
c++类构造函数理解
记录一下我对C++类构造函数的理解。 首先,构造函数分成两种,默认构造函数和非默认构造函数(好吧,就这么叫它)。 默认构造函数只能有一个,如果没有自定义构造函数,那么编译器将自动生成一个默认构造函数,当然这个构造函数不会做任何事情。如果程序定义了构造函数(包括默认和非默认),编译器都不再自动提供默认构造函数。 如class C, 对应自动生成的默认构造函数为C() { }; 程序员可以自定原创 2012-12-01 21:45:28 · 1684 阅读 · 0 评论