24小时热门版块排行榜    

查看: 1759  |  回复: 14
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

微尘、梦想

木虫 (知名作家)

[求助] 复制构造函数问题

书上说:复制构造函数在以下3种情况下会被调用:
1、用类的对象去初始化该类的另一个对象时;
2、函数的形参是类的对象时;
3、函数的返回值是类的对象时。
程序:
CODE:
#include
using namespace std;
class point
{
private:
        int x,y;
public:
        point(int a=0,int b=0)      //定义构造函数
        {
                x=a;
                y=b;
        }
        point(point &p);            //声明复制构造函数
        int getx()
        { return x; }
        int gety()
        { return y; }
};
point::point(point &p)          //定义复制构造函数
{
        x=p.x*10;
        y=p.y*20;
        cout <<"调用复制构造函数"< }
void f(point p)
{  cout < point g()
{  point q(3,5); return q; }
void main()
{
        point p1(1,2);
        point p2(p1);    //第一种情况
        cout <         f(p2);      //第二种情况
        p2=g();     //第三种情况
        cout < }

问题:该程序在第三种情况时并没有调用复制构造函数,其执行结果为:
调用复制构造函数
10      40
调用复制构造函数
100     800
3       5
不知道为什么,谢谢各位指点!!!
回复此楼
任风云变幻,我笑对人生!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★
余泽成(金币+2): 谢谢参与应助! 2011-06-08 16:12:34
引用回帖:
Originally posted by 微尘、梦想 at 2011-06-07 21:38:31:
书上是这么说的,然后我去网上查了查也是这么说的啊~~
http://baike.baidu.com/view/2329038.htm
5.何时使用复制构造函数

5.何时使用复制构造函数:按值传递对象,函数返回对象,用一个对象初始化另一个对象即复制初始化时,根据元素初始化列表初始化数组元素。这四种情况都将调用复制构造函数。记住,复制构造函数只能用于初始化,不能用于赋值,赋值时不会调用复制构造函数,而是使用赋值操作符。

=======================
我觉得不应该调用,但是vc调用了
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
6楼2011-06-07 21:49:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★
余泽成(金币+2): 谢谢参与应助! 2011-06-08 16:09:43
微尘、梦想(金币+5): 谢谢~~ 2011-06-09 07:37:32
point g()
.....
p2=g();     //第三种情况
============

第三种情况直接返回了一个point对象,不会调用的
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2011-06-07 21:36:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

微尘、梦想

木虫 (知名作家)

引用回帖:
Originally posted by libralibra at 2011-06-07 21:36:08:
point g()
.....
p2=g();     //第三种情况
============

第三种情况直接返回了一个point对象,不会调用的

书上是这么说的,然后我去网上查了查也是这么说的啊~~
http://baike.baidu.com/view/2329038.htm
5.何时使用复制构造函数
任风云变幻,我笑对人生!
3楼2011-06-07 21:38:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

不过我vs2008编译器有调用啊
CODE:
调用复制构造函数
10      40
调用复制构造函数
100     800
调用复制构造函数
30      100

Process returned 0 (0x0)   execution time : 0.047 s
Press any key to continue.

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2011-06-07 21:43:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 v7Aev8ORQjin 2026-08-22 3/150 2026-08-23 20:58 by 0p9y1isJp2jM
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +4 h4CP7TrQR8Lg 2026-08-22 4/200 2026-08-23 20:55 by 0p9y1isJp2jM
[博后之家] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 h4CP7TrQR8Lg 2026-08-22 4/200 2026-08-23 20:46 by 0p9y1isJp2jM
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 2JOx3r2CYEgw 2026-08-22 4/200 2026-08-23 19:34 by lXgU0RvNTDC9
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-22 6/300 2026-08-23 19:31 by lXgU0RvNTDC9
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-21 5/250 2026-08-23 19:10 by lXgU0RvNTDC9
[论文投稿] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 8/400 2026-08-23 18:58 by lXgU0RvNTDC9
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 5/250 2026-08-23 18:55 by lXgU0RvNTDC9
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 2JOx3r2CYEgw 2026-08-21 5/250 2026-08-23 14:33 by KM5EcsNQRBPn
[基金申请] 2026国自然函评费到账 +15 羊腰板 2026-08-21 16/800 2026-08-23 10:45 by process2012
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 DpSrDtM079iu 2026-08-22 5/250 2026-08-23 04:07 by OEbVnUOu01ol
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-22 5/250 2026-08-23 03:52 by OEbVnUOu01ol
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 2JOx3r2CYEgw 2026-08-22 6/300 2026-08-23 03:40 by OEbVnUOu01ol
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +16 医学老男孩 2026-08-20 20/1000 2026-08-21 21:13 by Ldrop2023
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见