| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 945 人关注过本帖
标题:副本构造函数的问题?
只看楼主 加入收藏
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
 问题点数:0 回复次数:9 
副本构造函数的问题?
副本构造函数 有什么用 怎么用 不是很清楚的
谢谢了
搜索更多相关主题的帖子: 副本构造 函数 
2008-03-09 11:17
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你举个例子看看...

学习需要安静。。海盗要重新来过。。
2008-03-09 11:19
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你说的是 copy constructor 吧?

Type A;
Type B = A;    //here use copy constructor

Fight  to win  or  die...
2008-03-09 12:22
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
我只是说那里调用了Type类的拷贝构造函数。
原型是:Type(const Type&)
一般来说定义了拷贝构造函数,那么就要定义=操作符和析构函数。
Type B = A;至于这句究竟是调用的=操作符,还是拷贝构造函数,你可以自己写代码跟踪下,这样印象更深刻。

Fight  to win  or  die...
2008-03-09 12:35
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
谢谢啊..呵呵

学习需要安静。。海盗要重新来过。。
2008-03-09 12:37
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
谢谢 楼上 两位
例子:    TYPE::TYPE(CONST TYPE& OBJECT){
                       //代码;
                       }
TYPE是类的对象
我就是 不知道 有构造函数就行了 再 弄个副本构造函数 有什么用啊
2008-03-09 13:13
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你自己不定义拷贝构造,赋值操作符,析构,那么编译器会生成默认的函数,但是它执行的是浅拷贝。某些场合下不能得到你期望的结果。

再进一步了解,建议你找本书看 “复制控制” 这一章

Fight  to win  or  die...
2008-03-09 14:29
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include"iostream.h"
class typebase
{
public:
    int a;
    int b;
public:
    typebase(int a,int b)
    {
        this->a=a;
        this->b=b;
    };
    virtual int v(int i,int j)
    {
        return i-j;
    };
};
class type:public typebase
{
public:
    int a;
    int b;
    type(int a,int b):typebase(a-50,b-50)
    {
        this->a=a;
        this->b=b;
    }
int    v(int i,int j)
    {
        return i+j;
    }
};
void main()
{
    type a(100,100);
    typebase &b=a;
    typebase b1=a;
    cout<<b.a<<endl;
    cout<<b.v(68,69)<<endl;
    cout<<b1.v(68,69)<<endl;
}

学习需要安静。。海盗要重新来过。。
2008-03-09 16:05
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
在3种情况下会调用拷贝构造器
1。使用一个对象对另一个对象初始化。
2。以对象作函数参数传递。
3。返回一个对象。
2008-03-09 16:45
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
复制控制,书上应该都有吧。

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-03-09 16:57
快速回复:副本构造函数的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016970 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved