免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1188 | 回复: 2
打印 上一主题 下一主题

[函数] 这里为什么就用复制函数呢。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-10 21:13 |只看该作者 |倒序浏览

#include<iostream.h>;
#include<string.h>;
class Hard{
protected:
               char bodyname[20];
public:
            Hard(char*bdnm)
                {
                        cout<<"con H\n";
                        strcpy(bodyname,bdnm);
                }
                Hard(Hard&abody)         //为什么用复制构造函数呢
        {
                        cout<<"copy H \n";
                        strcpy(bodyname,abody.bodyname);
                }
                void printf()
                {
                        cout<<"Body_name:"<<bodyname<<endl;
                }
};
class Soft{
protected:
            char os[10];
                char lang[15];
public:
            Soft(char*o,char*lg)   //构造函数
                {
                        cout<<"cou F\n";
                        strcpy(os,o);
                        strcpy(lang,lg);
                }
                Soft(Soft&asoft)
        {
                        cout<<"copy F\n";
                        strcpy(os,asoft.os);
                        strcpy(lang,asoft.lang);
                }
                void print()
                {
                        cout<<"os:"<<os<<",language:"<<lang<<endl;
                }
};
class System:public Hard,public Soft{
            char owner[10];
public:
        System(char*ow,char*bn,char*o,char*lg):Hard(bn),Soft(o,lg)
        {
                cout<<"con S\n";
                strcpy(owner,ow);
        }
        System(Hard abody,Soft asoft,char*ow):Hard(abody),Soft(asoft)
        {
                cout<<"copy S\n";
                strcpy(owner,ow);
        }
        void print()
        {
                cout<<"owner:"<<owner;
                cout<<";\n hard:"<<bodyname;
                cout<<";\n soft:"<<os<<","<<lang<<endl;
        }
};
void main()
{
        System bsystem("Wang","IBM PC","C DOS","True BASIC";
        bsystem.print();
        cout<<"Ok!\n";
        Hard abody("AST 386 sx/16";
        Soft asoft("C DOS","Borlang C++";
        System asystem("AST 386sx/16",asoft,"Zhang";
        asystem.print();
}

我是一个初学者,希望大家能够帮助我,谢谢。

论坛徽章:
0
2 [报告]
发表于 2004-11-10 22:02 |只看该作者

这里为什么就用复制函数呢。

原帖由 "mengyiqianxun" 发表:
blic:
        System(char*ow,char*bn,char*o,char*lg):Hard(bn),Soft(o,lg)
        {
                cout<<"con S\n";
                strcpy(owner,ow);
        }
        System(Hard abody,Soft asoft,char*ow):Hard(abody),Soft(asoft)
        {
                cout<..........


如果你要产生一个跟原来已有的对象一样的对象,那就可以用复制构造函数。编译器根据函数签名调用合适的构造函数。

论坛徽章:
0
3 [报告]
发表于 2004-11-11 13:41 |只看该作者

这里为什么就用复制函数呢。

这里使用copy ctor不是必需的。
并且你得copy ctor也有问题,没加const。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP