#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; }这个程序哪里错了
时间: 2024-03-31 14:38:53 浏览: 60
这个程序没有明显的语法错误,但是在调用 `t1.display(d1)` 函数时,应该将参数类型改为 `Date&`,而不是 `Time&`。因为 `display()` 函数是在 `Time` 类中定义的,需要传入一个 `Date` 类型的对象来显示日期,所以应该修改为 `void display(Date&);`,并在调用时传入 `Date` 类型的对象。
如果这里算作是错误的话,还可以指出`display()` 函数的友元声明应该是 `friend void display(Date&);`,而不是 `friend void display(Date & d);`,这里多了个空格。但这个问题不会导致程序出错,只是一种代码风格问题。
相关问题
#include <iostream> using namespace std; class Date { public: Date(int = 1, int = 1, int =2005); void display(); private: int month; int day; int year; }; Date::Date(int m, int d, int y) :month(m), day(d), year(y) { } void Date::display() { cout << month << "/" << day << "/" << year << endl; } int main() { Date d1(10, 13, 2005); Date d2(12, 30); Date d3(10); Date d4; d1.display(); d2.display(); d3.display(); d4.display(); return 0; }
这段代码定义了一个名为Date的类,并在主函数中创建了四个Date类的对象d1、d2、d3和d4,然后分别调用了它们的display函数,将它们的月、日、年输出到屏幕上。
Date类有三个私有成员变量:月份、日期和年份,以及一个公有的构造函数和一个公有的display函数。构造函数有三个参数,分别代表月、日、年,其中月和日有默认参数1,年有默认参数2005。display函数将月、日、年输出到屏幕上,格式为“月/日/年”。
在主函数中,用不同的参数创建了四个Date类的对象,并依次调用它们的display函数,将它们的日期输出到屏幕上。其中d1是10月13日2005年,d2是12月30日2005年,d3是10月1日2005年,d4是1月1日2005年。
#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。
阅读全文