码迷,mamicode.com
首页 > 编程语言 > 详细

c++:三

时间:2019-09-29 23:27:39      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:允许   函数   定义函数   无法   turn   成员   防止   部分   public   

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();
这时编译器报错:
技术图片

证明成立

c++:三

标签:允许   函数   定义函数   无法   turn   成员   防止   部分   public   

原文地址:https://www.cnblogs.com/Drac/p/11610372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!