MyMSDN

MyMSDN记录开发新知道

[学习笔记]C++ Primer[第二章]基本语言

Page 30 ( Chapter 2 基本语言)
算术类型的存储空间依机器而定。
Page 30 ( Chapter 2 基本语言)
表示整数、字符和布尔值的算术类型合称为整形(integral type)
字符类型有两种:char和wchar_t。char类型通常是单个机器字节(byte)。wchar_t类型用于扩展字符集,比如汉字和日语
Page 31 ( Chapter 2 基本语言)
在位这一级上,存储器是没有结构和意义的。
让存储具有结构的最基本方法是用块(chunk)处理存储。……虽然确切的大小因机器不同而不同,但是通常将8位的块作为一个字节,32位或4个字节作为一个“字(word)”
Page 32 ( Chapter 2 基本语言)
C++标准并未定义signed类型如何用位来表示,而是由每个编译器自由决定如何表示signed类型。……符号位为1,值就为负数;符号位为0,值就为0或正数。……有些语言中将负数赋给unsigned类型是非法的,但在C++中这是合法的。
Page 35 ( Chapter 2 基本语言)
为了兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。
Page 36 ( Chapter 2 基本语言)
两个相邻的仅由空格、制表符或换行符分开的字符串字面值(或宽字符串字面值),可连接成一个新字符串字面值。
//concatenated long string literal
std::cout<<"a multi-line "
"string literal "
"using concatenation "
<<std::endl;
执行这条语句将会输出:
a multi-line string literal using concatenation
如果连接字符串字面值和宽字符串字面值,将会出现什么结果呢?例如:
//Concatenating plain and wide character strings is undefined
std::cout<<"multi-line" L"literal "<<std::endl;
其结果未定义的(unsigned),也就是说,连接不同类型的行为标准没有定义。这个程序可能会执行,也可能会崩溃或者产生没有用的值,而且在不同的编译器下程序的动作可能不同。
Page 36 ( Chapter 2 基本语言)
在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。
std::cou\
t<<"Hi"<<st\
d::endl;
等价于
std::cout<<"Hi"<<std::endl;
注意反斜线符号必须是该行的尾字符——不允许其后面有注释或空格。同样,后继行行首的任何空格和制表符都是字符串字面值的一部分。正因如此,长字符串字面值的后继行才不会有正常的缩进。
Page 39 ( Chapter 2 基本语言)
C++是一门静态类型语言,在编译时会作类型检查。
Page 41 ( Chapter 2 基本语言)
标识符不能包含两个连续的下划线,也不能以下划线开头后面紧跟一个大写字母。有些标识符(在函数外定义的标识符)不能以下划线开头。
Page 42 ( Chapter 2 基本语言)
C++支持两种初始化变量的形式:复制初始化(copy-initialization)和直接初始化(direct-initialization)。复制初始化语法用等号(=),直接初始化则是把初始化式放在括号中:
int ival(1024);    //direct-initialization
int ival = 1024;    //copy-initialization
Page 43 ( Chapter 2 基本语言)
也可以通过一个计数器和一个字符初始化string对象。这样创建的对象包含重复多次的指定字符,重复次数由计数器指定:
std::string all_nines(10,'9');    //all_nines="9999999999"
本例中,初始化all_nines的唯一方法是直接初始化。有多个初始化式时不能使用复制初始化
Page 44 ( Chapter 2 基本语言)
内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体里定义的内置类型变量不进行自动初始化。
Page 46 ( Chapter 2 基本语言)
extern声明不是定义,也不分配存储空间。
……
只有当extern声明位于函数外部时,才可以含有初始化式。
Page 50 ( Chapter 2 基本语言)
非const变量默认为extern,要使const变量能够在其他的文件中访问,必须显式地指定它为extern
Page 51 ( Chapter 2 基本语言)
引用只是对象的另一个名字
Page 52 ( Chapter 2 基本语言)
const引用可以初始化为不同类型的对象或者初始化为右值
……
非const引用只能绑定到与该引用同类型的对象。
const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
Page 56-57 ( Chapter 2 基本语言)
如果使用class关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为private;如果使用struct关键字,那么这些成员都是public。使用class还是struct关键字来定义类,仅仅影响默认的初始化访问级别。
可以等效地定义Sales_item类为:
struct Sales_item{
    //no need for public label, memebers are public by default
    //operations on Sales_item objects
private:
    std::string isbn;
    unsigned units_sold;
    double revenues
};
本例的类定义和前面的类定义只有两个区别:这里使用了关键字struct,并且没有在花括号后使用关键字public。struct的成员都是public,除非有其他特殊的声明,所以就没有必要添加public标号。
用class和struct关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为public,而class的成员为private。
Page 59 ( Chapter 2 基本语言)
这种行为有一个很重要的含义:当我们在头文件中定义了const变量后,每个包含该头文件的源文件都有了自己的const变量,其名称和值都一样。

posted on 2007-06-16 01:32 volnet 阅读(974) 评论(2)  编辑 收藏 引用 所属分类: C++ Primer 学习笔记

评论

# re: [学习笔记]C++ Primer[第二章]基本语言 2007-07-10 12:55 zhanghaibin

这个方法不错,不过会不会浪费时间呀,要敲这么多字进去  回复  更多评论   

# re: [学习笔记]C++ Primer[第二章]基本语言[未登录] 2008-07-28 11:18 foxtail

这样学废时间 还容易放弃 枯燥无味  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


特殊功能