华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents 常对象与常成员 2 对象数组与对象指针 3 向量类:vector 字符串类:string http://math.ecnu.edu.cn/~jypan
目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 常对象与常成员 对象数组与对象指针 3 向量类:vector 4 字符串类:string
1 常对象与常成员 为什么需要常对象 ■ 常对象的声明 常数据成员、常函数成员 ■ 常引用 关键字const http://math.ecnu.edu.cn/~jypan 3
http://math.ecnu.edu.cn/~jypan 3 常对象与常成员 为什么需要常对象 常对象的声明 常数据成员、常函数成员 常引用 关键字 const 1
为什么常对象 为什么常对象: 将对象声明成常对象,可以有效地保护数据。 常对象的声明 const类名 对象名; //OK 类名const对象名; /OK ·常对象必须进行初始化 常对象:数据成员均为常量 不能通过常对象调用普通成员函数! 常对象只能作为常成员函数的目的对象! http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 4 为什么常对象 常对象必须进行初始化 常对象:数据成员均为常量 为什么常对象: 将对象声明成常对象,可以有效地保护数据。 常对象的声明 const 类名 对象名; // OK 类名 const 对象名; // OK † 不能通过常对象调用普通成员函数! † 常对象只能作为常成员函数的目的对象!
常成员 口常成员函数 类型说明符 函数名(形参)const; ●常对象只能调用常成员函数 ·常成员函数可以被普通对象调用 ·无论对象是否为常对象,常成员函数的目的对象都将被视为常对象 口常数据成员 ●将数据成员声明为常量 ●必须初始化(采用参数初始化表,不能在构造函数内赋值) Example /假定数据成员a和b是常量,c是普通变量 Myclass:Myclass(int x,int y,int z):a(x),b(y) {c=z;} http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan 5 常成员 常对象只能调用常成员函数 常成员函数可以被普通对象调用 无论对象是否为常对象,常成员函数的目的对象都将被视为常对象 常成员函数 常数据成员 将数据成员声明为常量 必须初始化(采用参数初始化表,不能在构造函数内赋值) // 假定数据成员 a 和 b 是常量,c 是普通变量 Myclass::Myclass(int x, int y, int z): a(x), b(y) { c=z; } 类型说明符 函数名(形参) const; Example
常成员 class Myclass { void display()const; void show(); const int a; int b; } Myclass:Myclass(int x,int y):a(x){b y; 。。。。 int main ( Myclass obj1(2,3); const Myclass obj2(4,5); Myclass const obj3(6,7); obj1.display();//OK obj2.display();//OK obj3.display();//OK obj1.show();//OK obj2.show();/ERROR obj3.show();/ERROR } ex11 class_const.cpp http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 6 常成员 class Myclass { ... ... void display() const; void show(); ... ... const int a; int b; }; Myclass::Myclass(int x, int y): a(x) { b = y; } ... ... int main () { Myclass obj1(2,3); const Myclass obj2(4,5); Myclass const obj3(6,7); obj1.display(); // OK obj2.display(); // OK obj3.display(); // OK obj1.show(); // OK obj2.show(); // ERROR obj3.show(); // ERROR } ex11_class_const.cpp