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

拷贝构造函数的有关问题

2012-01-15 
拷贝构造函数的问题我从书上看了一个程序,自己运行一下,总是不能编译,麻烦大家帮我看看错误在哪啊?#includ

拷贝构造函数的问题
我从书上看了一个程序,自己运行一下,总是不能编译,麻烦大家帮我看看错误在哪啊?

#include <iostream.h>

class     CDate
{
public:
CDate(int   year=2007,int   month=3,int   day=20)
{
cout < < "调用构造函数 " < <endl;
nYear=year;     nMonth=month;       nDay=day;
cout < <nYear < < "- " < <nMonth < < "- " < <nDay < <endl;
}
CDate(const   CDate   &ymd)
        {
        cout < < "调用拷贝构造函数 " < <endl;
cout < <ymd.nYear < < "- " < <ymd.nMonth < < "- "ymd.nDay < <endl;
}
private:
int   nYear,nMonth,nDay;
};

void   main()
{
CDate   day1(2002,8);
CDate   day2(day1);
}


[解决办法]
CDate(const CDate &ymd)
{
nYear=ymd.nYear; nMonth=ymd.nMonth; nDay=ymd.nDay;


cout < < "调用拷贝构造函数 " < <endl;
cout < <ymd.nYear < < "- " < <ymd.nMonth < < "- "ymd.nDay < <endl;
}

[解决办法]
int nYear,nMonth,nDay;是private,用ymd是不能直接访问的。应该是
CDate(const CDate &ymd)
{
nYear=ymd.nYear; nMonth=ymd.nMonth; nDay=ymd.nDay;


cout < < "调用拷贝构造函数 " < <endl;
cout < <nYear < < "- " < <nMonth < < "- "nDay < <endl;
}
[解决办法]
CDate(const CDate &ymd)
{
cout < < "调用拷贝构造函数 " < <endl;
cout < <ymd.nYear < < "- " < <ymd.nMonth < < "- "ymd.nDay < <endl; //此行有错误
}

cout < <ymd.nYear < < "- " < <ymd.nMonth < < "- " < <ymd.nDay < <endl;
[解决办法]
14行错了:
原:cout < <ymd.nYear < < "- " < <ymd.nMonth < < "- "ymd.nDay < <endl;
改为:cout < <ymd.nYear < < "- " < <ymd.nMonth < < "- " < <ymd.nDay < <endl;
再有你的拷贝构造函数实现不对
[解决办法]
CDate(const CDate &ymd)
{
cout < < "调用拷贝构造函数 " < <endl;
cout < <ymd.nYear < < "- " < <ymd.nMonth < < "- " < <ymd.nDay < <endl;
}
[解决办法]
你的 16行还是错的,改成这样
cout < <ymd.nYear < < "- " < <ymd.nMonth < < "- " < <ymd.nDay < <endl;
[解决办法]
直接把int nYear,nMonth,nDay;改为public或添加公有函数,我上面的也有问题。

热点排行