摘要:
关于这个问题是引起来源于一则面试问题:引用型成员变量如何初始化?回答的不是很确定,于是对这个问题研究一下。1、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。class CA{public:int data;……public:CA();……};CA::CA():data(0)//……#1……初始化列表方式{//data = 0;//……#1……赋值方式};2、static 静态变量:static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个。在这种性质上理解,有点类似于全局变量的唯一性。clas 阅读全文
摘要:
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:classCExample{public:inta;floatb;//构造函数初始化列表CExample():a(0),b(8.8){}//构造函数内部赋值CExample(){a=0;b=8.8;}};上面的例子中两个构造函数的结果是一样的。上面的构造函数(使用初始化列表的构造函数)显式的初始化类的成员;而没使用初始化列表的构造函数是对类的成员赋值,并没有进行显式的初始化。初始化和赋值对内置类型的成员没有什么大的区别,像上面的任一个构造函数都可以。对非内置类型成员变量,为了避免 阅读全文
摘要:
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字。在实际使用过程种有什么区别呢?主要是符号位,但是在普通的赋值,读写文件和网络字节流都没什么区别,反正就是一个字节,不管最高位是什么,最终的读取结果都一样,只是你怎么理解最高 阅读全文
摘要:
最近有人提到char和unsigned char有什么区别,当然这个问题如果刚学计算机或者编程语言的人来说,非常简单。我也这么认为,无非就是有符号和无符号的差别嘛。这个问题让我想到了以前学习计算机常识的时候关于补码,原码,反码的差异。这里摘取参考文章【1】中的部分内容:注意:此处的'=='是相等的意思。'='是赋值的意思。在机器世界里:正数的最高位是符号位0,负数的最高位是符号位1。对于正数:反码==补码==原码。对于负数:反码==除符号位以外的各位取反。 补码==反码+1. 原码==补码-1后的反码==补码的反码+1。(读完本文后,应该能够直观地认识到本式的正 阅读全文