c++:三

mac2022-06-30  70

C++:三

  对于共享数据的保护,我们可以使用常量,在使用数据的同时也防止了数据被修改,即可有效的保护数据。

常对象

  常对象必须在定义对象时就使用“const”关键字将指定对象命名为常对象。常对象的数据成员值在对象生存的期间内不能被改变。

  常对象中的数据成员为常变量且必须要有初始值,如

Time const t1(12,34,36); //定义t1为常对象 //或者写为 const Time t1(12,34,36); //两种写法都是正确的。

也就是说常对象必须初始化且不能被更新。

例如:

常成员函数

  同样的,使用关键字“const”修饰的函数为常成员函数。 使用为下:

void print() const;//类型说明符 函数名 const;

常成员函数可以访问常对象中的数据成员,但仍然不允许修改常对象中数据成员的值。const是函数类型的一部分,在声明函数和定义函数都要有const关键字,在调用时不必加const。 例如:

#include <iostream> using namespace std; class R { public: R(int r1, int r2) :r1(r1), r2(r2){} void print(); void print() const; private: int r1,r2; }; void R::print() { cout << r1 << ";" << r2 << endl; } void R::print() const { cout << r1 << ";" << r2 << endl; } int main() { R a(5,4); a.print(); const R b(20, 52); b.print(); return 0; } 输出结果为: 5;4 20;52

在此基础上进行对于const b中的值无法修改的实验,在原有函数中加入change函数,用于改变r1,r2的值,具体代码如下:

#include <iostream> using namespace std; class R { public: R(int r1, int r2) :r1(r1), r2(r2){} void print(); void print() const; void change(); private: int r1,r2; }; void R::print() { cout << r1 << ";" << r2 << endl; } void R::print() const { cout << r1 << ";" << r2 << endl; } void R::change() { r1 = r1 + 1; r2 = r2 + 1; cout << r1 << ";"<<r2 << endl; } int main() { R a(5,4); a.print(); const R b(20, 52); b.print(); a.change(); return 0; } 运行结果为: 5;4 20;52 6;5

证明change函数将a中的值成功改变,然后将main函数中的a.change();语句改为b.change(); 这时编译器报错:

证明成立

转载于:https://www.cnblogs.com/Drac/p/11610372.html

最新回复(0)