C++ 学习之路(7):共享数据的保护

/*
    共享数据的保护:
    常类型(指使用类型修饰符const说明的类型)的引入,就是为了
    既保护数据共享又防止数据被改动

    此例含有:
    1、常引用
    2、常对象
    3、常对象成员:
       i.常数据成员
       ii.常成员函数

*/  
/*
    常引用:
    #include <iostream>
    using namespace std;
    int add(const int &i, const int &j);
    int main()
    {
        int a=20;
        int b=30;
        cout<<a<<"+"<<b<<"="<<a+b<<endl;
        return 0;
    }
    int add(const int &i, const int &j)     
    // 函数add()的形参是常引用,因此
    {
        i = i + 30;                         // 不允许改变i的值
        j = j - 10;                         // 不允许改变j的值
        return (i+j);
    }  

*/
#include <iostream>
using namespace std;
class Date
{
   private:
       const int year;
       const int month;
       const int day;
   public:
       Date(int y,int m,int d); // 类Date的构造函数声明
       /*此处声明了2个同名函数showDate(),它们是重载的。可见,关键字   const可以被用于对重载函数进行区分。*/
       void showDate();         // 普通成员函数声明
       void showDate() const;   // 常成员函数声明
};
/* C++规定只能通过构造函数的成员初始化列表对常数据成员进行初始化 */
Date::Date(int y,int m,int d):year(y),month(m),day(d)
{}
void Date::showDate()   // 普通成员函数定义
{
    cout<<"调用普通成员函数显示日期:"<<endl;
    cout<<year<<"."<<month<<"."<<day<<endl;
}
void Date::showDate() const // 常成员函数定义
{
    cout<<"调用常成员函数显示日期:"<<endl;
    cout<<year<<"."<<month<<"."<<day<<endl;
}

int main()
{
    // 普通对象定义
    Date date1(2016,3,15);
    date1.showDate();

    // 常对象定义
    const Date date2(2016,3,16);
    date2.showDate();

    return 0;
}

注:

  • 普通成员函数

    • 对普通数据成员,可以访问,可以改变值
    • 对常数据成员,可以访问,但不可以改变值
    • 对常对象的数据成员,不允许访问和改变值
  • 常成员函数

    • 对普通数据成员,可以访问,但不可以改变值
    • 对常数据成员,可以访问,但不可以改变值
    • 对常对象的数据成员,可以访问,但不可以改变值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值