您的位置:首页 > 编程语言 > C语言/C++

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

2016-03-16 18:13 309 查看
/*
共享数据的保护:
常类型(指使用类型修饰符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;
}


注:

普通成员函数

对普通数据成员,可以访问,可以改变值

对常数据成员,可以访问,但不可以改变值

对常对象的数据成员,不允许访问和改变值

常成员函数

对普通数据成员,可以访问,但不可以改变值

对常数据成员,可以访问,但不可以改变值

对常对象的数据成员,可以访问,但不可以改变值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++