普通成员函数可以访问常数据成员但是不能改变常数据成员的值;
普通成员函数不可以访问常对象的数据成员且不能改变常对象的数据成员的值;
常成员函数可以访问普通数据成员但是不可以改变普通数据成员的值;
常成员函数可以访问常数据成员但是不可以改变常数据成员的值;
常成员函数可以访问常对象的数据成员但是不可以改变常对象的数据成员的值;
以下为举例
题目
设计一个日期类和时间类,编写display函数用于显示日期和时间。要求:display函数作为类外的普通函数,分别在Time和Date类中将display声明为友元函数。在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年(year)、月(month)、日(day)和时(hour)、分(minute)、秒(sec)。????????????????????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
描述
在此处编写题目描述信息????????????????????????????????????????????????????????????????????????????????????????????????
点击编辑器菜单栏按钮?{;}?添加示例代码????????????????????????????????????????????????????????????????????????????????????????????????
void display(const Date& d, const Time& t)
{
...
}
?????????????????????????????????????????????????????????????????????????????????????????????????
输入输出示例
在此处提供一个符合格式描述的例子, 对于自动评阅题, 您也可以选择直接在测试用例中提供????????????????????????????????????????????????????????????????????????????????????????????????
| 输入 | 输出 | 示例 1 | 2021
4
20
15
04
22 | 2021/4/20
15:4:22 |
#include<iostream>
#include<cstring>
using namespace std;
class Time;
class Date{
private:
int year,month,day;
public:
void set(const int a,const int b,const int c){
this->year=a;
this->month=b;
this->day=c;
}
void shuchu() const{
cout<<year<<"/"<<month<<"/"<<day<<endl;
}
friend void display(const Date& d, const Time& t);
};
class Time{
private:
int hour,minute,sec;
public:
void set(const int a,const int b,const int c){
this->hour=a;//将常数据成员的值赋予普通数据成员
this->minute=b;
this->sec=c;
}
const void shuchu() const{//常成员函数
cout<<hour<<":"<<minute<<":"<<sec;
}
friend void display(const Date& d, const Time& t);
};
void display(const Date& d, const Time& t)//常成员函数只能访问常成员函数
{
d.shuchu();//也可以写成cout<<d.year<<"/"<<d.month<<"/"<<d.day<<endl;因为常成员函数可以访问普通数据成员
t.shuchu();
}
int main()
{
int x1,x2,x3,x4,x5,x6;
cin>>x1>>x2>>x3>>x4>>x5>>x6;
Date A;
Time B;
A.set(x1,x2,x3);
B.set(x4,x5,x6);
display(A,B);
return 0;
}
|