#include<iostream> using namespace std; class Time; class Date { public: Date(int,int,int); friend Time;//将Time类声明为友元类 private: int month; int day; int year; }; Date::Date(int m,int d,int y):month(m),day(d),year(y){} class Time { public: Time(int,int,int); void display(const Date &); private: int hour; int minute; int sec; }; Time::Time(int h,int m,int s):hour(h),minute(m),sec(s){} void Time::display(const Date &d) {cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用Date类对象d1的数据成员 cout<<hour<<":"<<minute<<":"<<sec<<endl;//引用Time类对象d1的数据成员 } int main() {Time t1(10,13,56); Date d1(12,25,2004); t1.display(d1); return 0; }
时间: 2024-03-15 07:42:56 浏览: 99
这段代码展示了如何在两个类之间建立友元关系,使得一个类可以访问另一个类的私有成员。具体来说,代码中有两个类:Date 和 Time。在 Date 类中,使用关键字 `friend` 将 Time 类声明为其友元类。这意味着 Time 类可以访问 Date 类的私有成员。在 Time 类中,定义了一个 `display` 函数,该函数接受一个 Date 类对象作为参数,并显示该对象的日期和 Time 类对象的时间。
在主函数中,创建了一个 Time 类对象 t1 和一个 Date 类对象 d1,并调用 t1 的 `display` 函数来显示日期和时间。由于 Date 类声明了 Time 类为其友元类,所以 Time 类可以引用 Date 类的私有成员 month、day 和 year,从而显示日期信息。
相关问题
#include <iostream> using namespace std; class Date; class Time {public: Time(int,int,int); friend void display(const Date &,const Time &); private: int hour; int minute; int sec; }; Time::Time(int h,int m,int s) {hour=h; minute=m; sec=s; } class Date {public: Date(int,int,int); friend void display(const Date &,const Time &); private: int month; int day; int year; }; Date::Date(int m,int d,int y) {month=m; day=d; year=y; } void display(const Date &d,const Time &t) { cout<<d.year<<"/"<<d.month<<"/"<<d.day<<endl; cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl; } int main() { Time t1(10,13,56); Date d1(12,25,2004); display(d1,t1); return 0; }
这段代码实现了一个简单的日期时间显示程序。其中定义了两个类:Date 和 Time,分别表示日期和时间。类中定义了构造函数,用于初始化对象的成员变量。类中还定义了友元函数 display,用于输出日期和时间。在主函数中,创建了一个时间对象 t1 和一个日期对象 d1,并将它们作为参数传递给 display 函数。最终输出的结果为:2004/12/25 和 10:13:56。
#include <iostream> using namespace std; class Date; class Time {public: Time(int,int,int); void display(Date&); private: int hour; int minute; int sec; }; class Date {public: Date(int,int,int); friend void display(Date & d); private: int month; int day; int year; }; Time::Time(int h,int m,int s) {hour=h; minute=m; sec=s; } Date::Date(int m,int d,int y) {month=m; day=d; year=y; } void Time::display(Date &d) {cout<<d.month<<'.'<<d.day<<','<<d.year<<endl; cout<<hour<<':'<<minute<<':'<<sec<<endl;} int main() {Time t1(10,13,56); Date d1(12,25,2004); t1.display(d1); return 0; }这个程序哪里错了
这个程序没有明显的语法错误,但是在调用 `t1.display(d1)` 函数时,应该将参数类型改为 `Date&`,而不是 `Time&`。因为 `display()` 函数是在 `Time` 类中定义的,需要传入一个 `Date` 类型的对象来显示日期,所以应该修改为 `void display(Date&);`,并在调用时传入 `Date` 类型的对象。
如果这里算作是错误的话,还可以指出`display()` 函数的友元声明应该是 `friend void display(Date&);`,而不是 `friend void display(Date & d);`,这里多了个空格。但这个问题不会导致程序出错,只是一种代码风格问题。
阅读全文