本文最后更新于:1 年前
(一)概念:
类的常成员包括常数据成员,常成员函数,常对象。
下面每一部分分别介绍一个内容。
(二)常数据成员:
1. 概念:
常数据成员是指在类中定义的不能修改其值的一些数据成员(只读变量),与常变量类似,一经赋值就无法再次进行更改。
形式为:const 类型 数据成员名;
2. 特点:
不同对象的相同常数据成员可以不同,但对于单个对象来说,常数据成员在初始化后是不可变的。
初始化时只允许通过初始化列表进行初始化,不允许在构造函数体内进行初始化/赋值等改变左值的操作。
对于任何函数,无论是成员函数、友元函数还是类外函数,均不允许修改其值,只能读取。
3. 代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #include <iostream> using namespace std;class Simple {private : const int x; int y;public : Simple ():x (0 ) { x=0 ; cout << "创建对象" << endl; y = 0 ; }; Simple (int a, int b) : x (a), y (b) { cout << "创建对象" << endl; } void showXY () { cout << x << "," << y << endl; } void resetXY (int a, int b) { x = a, y = b; return ; } void Simple_thisuse (int a,int b) { cout << this ->x << " " << this ->y << endl; (*this ).x += a; (*this ).y += b; cout << this ->x << " " << this ->y << endl; cout << this << endl; return ; } ~Simple () { cout << "释放对象" << endl; } };int main () { Simple ss; Simple s (1 , 2 ) ; ss.showXY (); return 0 ; }
(三)常成员函数:
1. 概念:
用const修饰的成员函数即为常成员函数。实际上,const是在修饰该成员函数隐含的this指针。
(const 类名 ***** const this )
形式:返回类型 成员函数名(参数表) const { 成员函数体 }
要注意const在成员函数开头时表示的是返回值是const 的,即返回值不可修改。
const必须加在成员函数头部的结尾 。
2. 特点:
3. 代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #include <iostream> using namespace std ;class Simple {private : int x; int y;public : Simple():x(0 ),y(0 ) { cout << "创建对象" << endl; }; Simple (int a, int b) : x(a), y(b) { cout << "创建对象" << endl; } void showXY () { cout << x << "," << y << endl; } void showXY () const { cout << x << "," << y << endl; } void resetXY (int a, int b ) { x = a, y = b; return ; } void resetXY (int a, int b ) const { x = a, y = b; return ; } const void Simple_thisuse (int a,int b ) { cout << this ->x << " " << this ->y << endl; (*this ).x += a; (*this ).y += b; cout << this ->x << " " << this ->y << endl; cout << this << endl; return ; } ~Simple() { cout << "释放对象" << endl; } };int main () { Simple ss; Simple s (1 , 2 ) ; ss.showXY(); return 0 ; }
(四)常对象:
1. 概念:
在声明对象前加const称该对象为常对象。
形式:类名 const 对象名[(参数表)] / const 类名 对象名[(参数表)] 两种意义相同。
2. 特点:
常对象只能调用常成员函数,不能调用非const成员函数。 ——常对象无法修改任何数据成员。
常对象中的数据成员必须要有初值 ,一经确定将无法改变。
常成员的成员函数/数据成员不一定是常成员函数/常数据成员,但表现为常成员函数/常数据成员。
3.代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 #include <iostream> using namespace std ;class Simple {private : int x; int y;public : Simple():x(0 ),y(0 ) { cout << "创建对象" << endl; }; Simple (int a, int b) : x(a), y(b) { cout << "创建对象" << endl; } void showXY () { cout << x << "," << y << endl; } void showXY () const { cout << "调用const版本:" << endl; cout << x << "," << y << endl; } void resetXY (int a, int b ) { x = a, y = b; return ; } const void Simple_thisuse (int a,int b ) { cout << this ->x << " " << this ->y << endl; (*this ).x += a; (*this ).y += b; cout << this ->x << " " << this ->y << endl; cout << this << endl; return ; } ~Simple() { cout << "释放对象" << endl; } };int main () { Simple ss; Simple s (1 , 2 ) ; ss.showXY(); const Simple s1; Simple const s2 (2 , 3 ) ; s1.resetXY(1 , 2 ); s2.showXY(); return 0 ; }