24小时热门版块排行榜    

查看: 1719  |  回复: 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的回帖

微尘、梦想

木虫 (知名作家)

引用回帖:
Originally posted by libralibra at 2011-06-07 21:43:57:
不过我vs2008编译器有调用啊

[code]调用复制构造函数
10      40
调用复制构造函数
100     800
调用复制构造函数
30      100

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

可我用VS2005就米有调用呀,虾米情况????
任风云变幻,我笑对人生!
5楼2011-06-07 21:46:16
已阅   回复此楼   关注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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] filecode,4个jtjc了 +8 ziyangfang 2026-08-19 9/450 2026-08-19 13:08 by blacksandy
[基金申请] 今天基金会出结果吗?20260819 +8 kkkl_v 2026-08-19 8/400 2026-08-19 12:34 by Vivilian
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +52 医学老男孩 2026-08-13 115/5750 2026-08-19 12:09 by 医学老男孩
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +8 启萌科技 2026-08-12 30/1500 2026-08-19 10:22 by 启萌科技
[基金申请] 今天放榜吗? +11 布布和一二 2026-08-19 11/550 2026-08-19 10:06 by xter9665
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +6 Tide man 2026-08-14 7/350 2026-08-19 09:56 by ZJTJZ
[基金申请] 什么时候开奖? +6 CrisMessi 2026-08-18 6/300 2026-08-19 08:06 by Equinoxhua
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +4 Tide man 2026-08-12 5/250 2026-08-19 07:41 by 201120518022
[基金申请] 重要消息,中午系统在维护 +10 yuleib84 2026-08-18 11/550 2026-08-19 07:30 by 羽毛枫f
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +3 瞬息宇宙 2026-08-15 3/150 2026-08-18 21:40 by xiaohuixin
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +13 Ldrop2023 2026-08-13 16/800 2026-08-18 12:25 by 淀粉搬运工
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[基金申请] filecode=后面第一个是大写字母 +8 wangze12014 2026-08-14 10/500 2026-08-17 17:05 by xter9665
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
信息提示
请填处理意见