首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-10-30 
C++编程练习题,请帮忙告诉我错在哪里了,题目大体是编写一个Date类,然后编写一个Person类,Person类的生日用

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;

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

热点排行