-
Notifications
You must be signed in to change notification settings - Fork 0
/
const
74 lines (60 loc) · 2.43 KB
/
const
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*在类中,如果不希望数据被修改,可以使用const关键字加以限定。const可以用来休息成员变量和成员函数。
关键字:const
若是const出现在星号左边,表示被指物是常量,如果出现在星号右边,表示指针本自身是常量;如果出现在星号两边,表示被指物和指针都是常量
const成员变量
const成员变量的用法和普通const变量的用法相似,只需要在声明中加上const关键字。在初始化const成员变量只有一种方法,就是通过构造函数的初始化列表。
const成员函数
const成员函数可以使用类中的所有成员变量,但是不能修改他们的值,这种措施主要还是为了保护数据而设计的
const成员函数也叫常成员函数。
const对象
const可以用来修饰对象,成为常对象。一旦将对象定义为常对象之后,不管是哪种形式,该对象就只能被const修饰的成员(包括const成员变量和const成员函数),
因为非const成员可能会修改对象的数据(编译器也会这样假设),c++进制这样做
对于类城阳函数声明后接const,表明在写函数时,若是不慎修改了数据成员,或者调用了其他非const成员函数,编译器会指出错误。例如:
class Stack
{
public:
void Push(int elem);
int Pop(void);
int GetCount(void) const;// const 成员函数
private:
int a;
int data[100];
};
int Stack::GetCount(void) const
{
++a; //编译错误,企图修改函数成员a
Pop(); //编译错误,企图调用非const函数
return a;
}
c++类的知识:
C++中访问类的私有(private)成员变量的方法,公共函数访问私有成员,
1.set/get接口
2.友元类
3.友元函数
4.类本身的成员函数
还可以使用指针修改private数据成员的值:
class Test
{
private:
int x;
int y;
public:
explicit Test(int _x,int _y):x(_x),y(_y){}
//explicit关键字的作用是修饰构造函数,被修饰的构造函数的类,不能发生相应的隐式的转换
//只能显示的进行转换
void Print(){cout<<x<<""<<y<<endl;}
};
int main(void)
{
Test a(1.2);
a.Printf();//输出结果1,2
int *p=(int *)&a;//p指向x
cout<<*p<<endl;//输出结果是
p++;//p指向y
cout<<*p<<endl;
*p=5;
a.Printf();
cout<<*p<<endl;
system("pause");
}
注意:int *p=(int *)&a;的形式进行等价。