| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 542 人关注过本帖
标题:小弟刚学C++求教问题
只看楼主 加入收藏
亡灵岛
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-25
结帖率:100%
收藏
已结贴  问题点数:6 回复次数:9 
小弟刚学C++求教问题
#include<iostream>

using namespace std;


class TAdd
{
public:
    TAdd(int a,int b)
    {
        x=a;y=b;
        cout<<"constructor."<<endl;
    }

    TAdd(const TAdd& p)
    {
        x=p.x;y=p.y;
        cout<<"copy constructor."<<endl;
    }
    ~TAdd()
    {
        cout<<"destructor."<<endl;
    }
    int add(){return x+y;}
private:
    int x,y;
};
TAdd& fl(TAdd a,TAdd& b)
{
    return b;
}
int main()
{
    TAdd p1(3,4);
    TAdd p2(p1);
    cout<<"x+y="<<fl(p1,p2).add()<<endl;
    return 0;

}
这个程序中   调用构造函数、复制构造函数和析构函数的时机、顺序和次数  该如何分析。求各位高手指教。
搜索更多相关主题的帖子: public include private class 
2012-03-25 20:15
亡灵岛
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-25
收藏
得分:0 
小弟看了很久还是没看明白。
2012-03-25 20:40
Caesoiar
Rank: 2
等 级:论坛游民
帖 子:19
专家分:42
注 册:2012-3-19
收藏
得分:2 
程序代码:
#include<iostream>

using namespace std;


class TAdd
{
public:
    TAdd(int a,int b)
    {
        x=a;y=b;
        cout<<"constructor."<<endl;
    }

    TAdd(const TAdd& p)
    {
        x=p.x;y=p.y;
        cout<<"copy constructor."<<endl;
    }
    ~TAdd()
    {
        cout<<"destructor."<<endl;
    }
    int add(){return x+y;}
private:
    int x,y;
};
TAdd& fl(TAdd a,TAdd& b)    // 函数的作用是什么?似乎没什么意义的说
{
    return b;
}
int main()
{
    TAdd p1(3,4);    // 第一次调用构造函数
    TAdd p2(p1);    // 第一次调用复制构造函数
    cout<<"x+y="<<fl(p1,p2).add()<<endl;    // 第二次调用复制构造函数,在fl()中构造临时对象a
                                            // 输出完后立刻析构a
    return 0;
    // main()函数退出前对p1,p2调用析构函数
}
2012-03-26 19:16
不要看ID
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2012-3-26
收藏
得分:2 
以下是引用Caesoiar在2012-3-26 19:16:34的发言:

#include
 
using namespace std;
 
 
class TAdd
{
public:
    TAdd(int a,int b)
    {
        x=a;y=b;
        cout<<"constructor."<
TAdd& fl(TAdd a,TAdd& b)    // 函数的作用是什么?似乎没什么意义的说
{ //这个的意义是在时间上的提高,并不是楼上所说没有意义。
  //TAdd a 构造了一个对象,程序结束会析构掉;
    return b;
}
int main()
{
    TAdd p1(3,4);    // 第一次调用构造函数
    TAdd p2(p1);    // 第一次调用复制构造函数
    cout<<"x+y="<                                            // 输出完后立刻析构a
    return 0;
    // main()函数退出前对p1,p2调用析构函数
}
2012-03-26 19:54
简体字01
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:137
注 册:2012-3-4
收藏
得分:0 
学习来的。
2012-03-26 21:57
lyswwr
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:124
注 册:2011-7-3
收藏
得分:2 
#include<iostream>
using namespace std;
class TAdd
{
public:
    TAdd(int a,int b)
    {
        x=a;y=b;
        cout<<"constructor."<<endl;
    }
    TAdd(const TAdd& p)
    {
        x=p.x;y=p.y;
        cout<<"copy constructor."<<endl;
    }
    ~TAdd()
    {
        cout<<"destructor."<<endl;
    }
    int add(){return x+y;}
private:
    int x,y;
};
TAdd& fl(TAdd a,TAdd& b)//这个函数就如上一楼说的,没有必要用
{
    return b;
}
int main()
{
    TAdd p1(3,4);//首先调用构造函数把3,和4赋值给x和y;再2次调用复制构造函数,再者求x+y,后面用析构函数先释放构造函数的内存空间,在释放复制构造函数内存空间;
    TAdd p2(p1);
    cout<<"x+y="<<fl(p1,p2).add()<<endl;
    return 0;   
}
2012-03-26 22:50
Caesoiar
Rank: 2
等 级:论坛游民
帖 子:19
专家分:42
注 册:2012-3-19
收藏
得分:0 
fl函数没有用吧,直接以p2替换即可,怎么会提高时间效率?
2012-03-27 12:53
亡灵岛
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-25
收藏
得分:0 
高手们,小弟受教,谢谢了。
2012-03-27 22:52
杰413
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:47
专家分:104
注 册:2012-3-31
收藏
得分:0 
在北京学C++的朋友注意啊,有sina风投的云壌公司招人啦,只要是985院校的朋友们,请投简历至david19890413@,我会先邮件回复,再电话联系。
2012-03-31 16:05
快速回复:小弟刚学C++求教问题
数据加载中...
 
   



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

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