天天看点

C++基础

1、标识符命名规则:

(1)由英文字母、数字和下划线组成;

(2)英文字母的大小要加以区别;

(3)不允许使用数字开头;

(4)不能用c++中的关键字。

2、c++提供了 const 关键字声明常量,const 表示一个“常值变量”,即不能改变值的变量。

3、4294967295是32为cpu寄存器以及visual c++6.0编译器所允许的最大正整数。

4、整型常量:

(1)十进制整型常量:十进制整型常量由0~9的数字组成。不能以 0 开头,没有小数部分。

(2)八进制整型常量:八进制形式整型常量必须以 0 开头,即以 0 作为八进制数的前缀。

(3)十六进制整型常量:十六进制整型常量的前缀为 0x 或 0x。由0~9的数字和a~f(a~f大小写相同)的字母组成。

实型常量:

(1)小数表示法;

(2)科学记数法:指数部分以符号“e”或“e”开始,但必须是整数,并且符号“e”或“e”两边都必须有至少一位数。例如:1.2e20, -3.4e-2

5、数据类型:

类型                    所占字节数

char                            1

bool                            1

short                           2

int                               4

long                             4

float                            4

double                         8

long doubel                  8

6、易错:

<a href="http://my.oschina.net/jacedy/blog/343354#">?</a>

1

2

3

<code>cout&lt;&lt;135/25&lt;&lt;endl;        </code><code>//输出:5</code>

<code>cout&lt;&lt;135.0/25&lt;&lt;endl;        </code><code>//输出:5.4</code>

<code>char</code> <code>arr[5] = </code><code>"hello"</code><code>;        </code><code>//错误的代码,数组溢出</code>

7、在计算机中,数据都是以二进制形式表示,以字节为最小单位进行存储。

8、共用体的内存空间可以用来存放多种不同类型的成员,但是在某一瞬时只有一个成员起作用,而起作用的成员是最后一次存放的成员。

9、大写字母的ascii码是从65开始的,而小写字母的ascii码是从97开始的,所以只要将原字符的ascii码加上32就可以获得对应的小写字母了。

(0 - 0;'0' - 48;'a' - 65;'a' - 97)

10、尽量不要在同一段代码中的复合语句内外定义同名的变量,虽然这样是合法的,但是不利于程序的阅读,也容易出现逻辑错误。

11、switch语句中的break语句属于跳转语句,在switch语句中,当遇到break语句时,程序将跳转到switch语句之后的下一行代码处。如果switch语句中没有使用break语句,当表达式与某个常量匹配时,将执行当前case语句代码,并且继续向下执行case语句的代码。直到遇到break语句或者switch语句结束。

12、在程序中使用do  while语句时,不要忘记while 语句部分在末尾要添加分号。

13、break语句跳出本层循环;continue语句跳出本次循环。

14、在程序设计中建议少用、慎用goto 语句,但是并不是禁用goto 语句,在嵌套的循环语句中,goto 语句可以直接跳出所有外层循环。

15、return语句将退出当前函数,返回到调用该函数的地方,开始执行吓一跳语句;

       exit 语句用于终止当前调用的进程,通常用于结束当前的应用程序。

16、在函数调用的时候要注意是传值调用还是传址调用。

17、省略号“…”也是参数,代表函数的参数是不固定的,可以传递一个或多个参数。

18、重载函数是指多个函数具有相同的函数名称,而参数类型或参数个数不同。

(1)函数的返回值类型不作为区分重载函数的标识;

(2)对于普通的函数参数来说const 关键字不作为区分重载函数的标识;

(3)如果参数的类型是指针或引用类型,则const 关键字将作为重载函数的标识;

(4)参数的默认值不作为区分重载函数的标识;

(5)使用typedef 自定义类型不作为重载的标识。

19、在c++中定义类时,类名通常以答谢字母c开头,成员变量以“m_”为前缀,这是一个约定俗成的习惯。

20、定义类的成员变量与定义普通的变量有所不同,那就是不能够在定义时对成员变量进行初始化。

21、析构函数不能够被重载,一个类只能有一个析构函数。

22、当定义一个类对象时,首先从顶层依次调用基类的构造函数,最后调用自身的构造函数;析构函数的调用顺序与构造函数正好相反,首先调用自身的析构函数,然后依次调用基类的析构函数。

23、对于多继承,c++语言提供了虚继承的机制,虚继承使得子类中只存在一个基类。

24、定义宏时,最好对每个数据加上括号,防止造成二义性问题,宏定义只是简单的替换。

25、在c语言中,const的用法主要有定义常量、修饰函数参数、修饰函数返回值等3个用处。在c++程序中,它还可以修饰函数的定义体,定义类中某个函数为恆态函数,即不可改变类中的数据成员。

26、内联函数inline是指嵌入代码,就是在调用函数的地方不是跳转,而是直接把代码写到那里去。

27、const常量赋值时,必须同时初始化;声明一个引用,引用不能为空,同时必须初始化。

28、c++的空类默认产生四个函数:默认构造函数、析构函数、拷贝构造函数和赋值函数。

29、面向对象技术的基本概念是:类、对象、继承。

30、struct 与class 的区别在于:struct中变量默认是public, class中变量默认是private。

31、类中的成员变量要初始化必须是在构造函数中或将其设置为static。

32、析构函数可以是内联函数。

33、析构函数可以是virtual 虚函数类型,但构造函数则不能。

34、覆盖(override)的函数必须有一致的参数表和返回值;重载(overload)是指编写一个与已有函数同名但参数表不同的函数。

35、虚继承就是为了节约内存的,他是多重继承中的特有的概念。适用与菱形继承形式。

       虚函数继承就是覆盖。即基类中的虚函数被派生类中的同名函数所覆盖。

36、左移运算符(&lt;&lt;)是双目运算符,其功能是把"&lt;&lt;"运算符左边的运算数的各二进位全部左移若干位,移动的位数由"&lt;&lt;"     运算符右边的数指定,高位丢弃,低位补0。   如:a&lt;&lt;2 //代表a的二进数向左移动2位。实际上左移一位相当于该数乘以2,称动2位 相当于该数乘以4,以此类推。这种情况只限于移动位不含1的情况。 

      右移运算符(&gt;&gt;)是双目运算符,其功能是把"&gt;&gt;"运算符左边的运算数的各二进位全部右移若干位,移动的位数按"&gt;&gt;"     运算符右边的数指定。在进行右移时对于有符号的数需要注意符号问题,当为正数时,最高位补0,而为负数时,最高位补0或1取决于编译      系统的规定,移入0的称为"逻辑右移",移入1的称为"算术右移"。(visualc++)是以算术右移。

37、c语言判断汉字:

4

5

6

7

<code>if</code><code>(is_zh_ch(</code><code>char</code> <code>p)!=0);</code>

<code>int</code> <code>is_zh_ch(</code><code>char</code> <code>p)</code>

<code>{</code>

<code>     </code><code>if</code><code>(~(p &gt;&gt; 8) == 0)</code>

<code>          </code><code>return</code> <code>0;</code>

<code>     </code><code>return</code> <code>-1;</code>

<code>}</code>

        和文字表示方法有关。西文字符一个字节(char)就可以表示(ascii码中包括了所有的西文字符),因为一个char只有8位,最多表示256个文字,因此而非西文字符的文字(unicode)全部用两个字节表示,机器内部的最小存储单位是字节,为了区分连续的两个char表示的是一个unicode还是两个西文字母,规定unicode码的两个字节的最高位都是1。

<code>if</code><code>(~(p &gt;&gt; 8) == 0) </code>

<code>    </code><code>return</code> <code>0;</code>

的意思是,将char p的符号位(char为8位,即最高位)右移,若是unicode则p&gt;&gt;8后为1111 1111,然后按位取反为0

        其实原理上面说过了,unicode码最高位为1,即符号位为1,上面的代码和下面的等价:

<code>    </code><code>if</code><code>(p&lt;0) </code>

<code>        </code><code>return</code> <code>0;</code>

<code>    </code><code>return</code> <code>-1;</code>

继续阅读