读书人

C++编程练习题请帮忙告诉小弟我错在

发布时间: 2013-10-30 12:56:22 作者: rapoo

C++编程练习题,请帮忙告诉我错在哪里了,
题目大体是编写一个Date类,然后编写一个Person类,Person类的生日用Date表示。
下面是我写的。

#include<iostream>
using namespace std;
class Date
{
int m_year;
int m_month;
int m_day;
public:
Date(){}
Date(int year,int month,int day)
{
m_year=year;
m_month=month;
m_day=day;
}
};
class Person
{
char* m_name;
char* m_sex;
Date* m_birthday;
public:
Person(){}
Person(char* name,char* sex,Date* birthday)
{
m_name=new char[strlen(name)+1];
strcpy(m_name,name);
m_sex=new char[strlen(sex)+1];
strcpy(m_sex,sex);
m_birthday=new Date;
m_birthday=birthday;
}
void display()
{
cout<<"My name is m_name"<<m_name<<",sex is"<<m_sex<<endl;
cout<<"My birthday is"<<m_birthday<<endl;

}
};
int main()
{
Date d(2011,2,5);
Person s("xiao","nan",d);//此处编辑器报错
return 1;
}

[解决办法]
Person s("xiao","nan",d);//此处编辑器报错

Person s("xiao","nan",&d);
[解决办法]
在Date类中加入
friend ostream& operator << (ostream& os, const Date& r_birthday)
{
os << r_birthday.m_year << ","
<< r_birthday.m_month << ","
<< r_birthday.m_day << "," ;
return os;
}
[解决办法]
m_birthday=new Date;
m_birthday=birthday;

这个语句有点问题,这样你会出现内存泄漏,你仔细想想指针的问题,就明白了
[解决办法]
void display()
{
cout<<"My name is m_name"<<m_name<<",sex is"<<m_sex<<endl;
cout<<"My birthday is"<<*m_birthday<<endl;

}
要改成这样才可以输入日期,不然会是地址

读书人网 >C++

热点推荐