2.4 const限定符
const对象默认为文件的局部变量,此变量只存在于那个文件中,不能被其他文件访问。通过指定const变量为extern,就可以在整个程序中访问const对象。
Exercise2.22
设置一个const变量代替循环上界100
Exercise2.23
第一个不合法,const变量必须初始化。
第二个合法。第三个不合法,改变了const变量的值。
2.5 引用
非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
Exercise2.24
(b)非法,非const引用必须用同类型的对象初始化,不能用右值初始化。可改正为int &rvall=ival;
Exercise2.25
(d)非法,rval3是const引用,不能进行赋值。
(a)将double型字面值赋给int型变量ival,发生隐式类型转换,ival值得到的值为3.
(b)将int值1赋给变量ival。
(c)将int值1赋给变量ival。
Exercise2.26
(a)定义ival为int变量,并初始化为0,;定义ri为const引用,并绑定到右值0。
(b)将0赋给变量ival;试图对ri赋值,这是非法的,因为ri是const引用,不能赋值。
Exercise2.27
10 10
2.6 typedef名字
2.7 枚举
枚举成员是常量,每个enum都定义一种唯一的类型,枚举类型的对象的初始化或赋值,只能通过其枚举成员或同一枚举类型的其他对象来进行。
2.8类类型
Exercise2.30
电话号码:
class Tel_number {
public:
private:
string country_number;
string city_number;
string phone_number;
};
地址:
class Address {
public:
private:
string country;
string city;
string street;
string number;
};
员工:
class Employee {
public:
private:
string name;
string ID;
char sex;
Address addr;
Tel_number tel;
};
公司:
class Company {
public:
private:
string name;
Address addr;
Tel_number tel;
};
某大学的学生:
class Stu {
public:
private:
string name;
string ID;
char sex;
string dept;//所在系
string major;
Address addr;
Tel_number tel;
};
2.9 编写自己的头文件
Exercise2.31
(a)定义;(b)定义;(c)声明;(d)声明,声明了一个const引用。
Exercise2.32
(a)(c)(d)应放在源文件中,因为(a)(c)变量定义,(d)中的const变量sq2没有用常量表达式初始化,也应该放在源文件中;(b)中的const变量pi是用常量表达式初始化的,应该放在头文件中。