您的位置:首页 > 编程语言 > C语言/C++

【转载,自己做了些批注】重学C++ Primer后一些基本知识点注意点总结

2015-09-25 22:52 513 查看
原文:http://bbs.csdn.net/topics/391834059

对于熟练C或者C++的人来说,熟读和熟记并理解下面的内容是有很大的帮助的,要在实践中好好去体会和实现下面的要点。以此作为笔记,不厌其烦的去理解,好好学习。

- 内置类型的存储空间依机器而定,当规定了每个算术类型的最小存储空间

- 字符串字面值区分宽字符串是以宽空字符结束的

- 使用了未定义行为的程序都是错误的,即时程序能够运行,也只是巧合。(提示:反斜杠)

- 变量的初始化形式包括:复制初始化(等号)和直接初始化(括号),对类类型的对象来说,有些初始化仅能用直接初始化完成。

- 初始化、赋值、定义要理解

- 内置类型变量是否自动初始化取决于变量定义的位置

- 类类型变量的初始化:如果定义某个类的变量时没有提供初始化式,这个类也可以定义初始化时的操作。它是通过定义一个特殊的构造函数即默认构造函数来实现的;

- 有些类类型没有默认构造函数,那就必须提供显示的初始化式

- 在一个程序中,变量有且仅有一个定义

- 定义也是声明

- extern 声明不是定义,也不分配空间;只有当声明也是定义时,声明才可以初始化式,如果声明有初始化式,那么它可被当作是定义,即使声明标记为extern,不过只有当extern 声明位于函数外部时,才可以含有初始化式;

- C++中,大多数作用域是通过用花括号来界定的

- 全局作用域、局部作用域、语句作用域、类作用域、命名空间作用域

- 通常把一个对象定义在它首次使用的地方是一个很好的办法

- const 对象:常量在定义后就不能被修改,所以定义时必须初始化(const_cast)

- 与其他变量不同,除非特别说明,在全局作用域声明的const 变量是定义该对象的文件的局部变量。此变量只存在被定义的那个文件中,不能被其他的文件访问

- 但是通过指定const变量为extern,就可以在整个程序中访问const对象(非const对象默认为extern)

- 引用是一种复合类型,通过在变量名前添加“&”符号来定义。

- 引用只能绑定一次对象;引用不能为数组;

- const 引用是指向const对象的引用;const 引用可以绑定到不同但相关类型的对象或绑定到右值(原因:中间变量);

- 非const引用只能绑定到与该引用同类型的对象;

- 枚举成员值可以不是唯一的,即可以有同样的值

- 不能改变枚举成员的值,枚举成员本身就是一个常量表达式,因此也可以用于需要常量表达式的地方

- 枚举类型的对象的初始化或赋值,只能通过其枚举成员或同一枚举类型的其他对象来进行,如枚举变量Week week = Mon;

- 定义变量和定义数据成员存在非常重要的区别:一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时,只能指定该数据成员的名字和类型。类不是在类定义里定义数据成员时初始化数据成员,而是通过称为构造函数的特殊成员函数控制初始化。

- 用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为public,而class的成员为private

struct s = {1, "2", 3.f} 这是 struct 的专属,class 不能这么执行初始化!

- struct 定义变量的时候不用像C语言那样要加上struct关键词了(这个挺好,也就是说,struct 前面加 typedef 是多余的了 - -、)

- 编译器把目标文件链接在一起形成可执行文件(会将静态库中用到的目标文件抽取出来合并到可执行文件中去!)

- 头文件包含在多个源文件中,所以不应该含有变量或函数定义,区别类中的数据成员的定义(不是很能理解)

- 当在头文件中定义const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样,相当与没包含一次就定义了同名同值的const变量,且const变量如果不加显示的extern,只能在本文件中使用,所以不会发生重定义错误,不同于普通变量,但是加了extern的话如果多次包含就是出现重定义的错误

- 避免多重包含:预处理变量。使用预处理变量可以防止多次包含同一个头文件。机制就是重包含了,通过预处理变量只对#ifndef后面的内容处理一次

更多的注意可以在我的博客中(帖子里界面显示不怎么美观):/article/1468151.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: