| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖
标题:请各位帮我看下下面的程序,怎么运行的啊
只看楼主 加入收藏
yy7software
Rank: 2
等 级:论坛游民
帖 子:21
专家分:48
注 册:2011-10-13
结帖率:100%
收藏
已结贴  问题点数:0 回复次数:1 
请各位帮我看下下面的程序,怎么运行的啊
#include <iostream>
using namespace std;
class num
{
public:
    num(){n=1;cout<<"构造函数执行"<<endl;}
    num (const num &s){this->n=s.n;cout<<"复制构造函数执行"<<endl;}
    num(int i){n=i;cout<<"构造函数执行"<<endl;}
    ~num(){cout<<"析构函数执行"<<endl;}
    int get()const {return n;}
    void set(int x){n=x;}
    void add(){n++;}
    const num &operator++(){++n;return *this;}
    const num operator++(int o){num temp(*this);++n;return temp;}
private:
    int n;
};
int main()
{
    num i;
    cout<<"i:"<<i.get()<<endl;
    num x=++i;
    cout<<"x:"<<x.get()<<endl;
    cout<<"i:"<<i.get()<<endl;
    x=i++;
    cout<<"x:"<<x.get()<<endl;
    cout<<"i:"<<i.get()<<endl;
    return 0;
}
运行结果:
构造函数执行
i:1
复制构造函数执行  //为什么这里还要执行一次复制构造函数,上面返回的不是别名来初始化对象x的吗
x:2
i:2
复制构造函数执行
复制构造函数执行
析构函数执行
析构函数执行
x:2
i:3
析构函数执行
析构函数执行
搜索更多相关主题的帖子: private include public return 
2011-10-13 11:51
lqsh
Rank: 2
来 自:山东济南
等 级:论坛游民
帖 子:26
专家分:58
注 册:2011-8-29
收藏
得分:20 
程序代码:
#include <iostream>
using namespace std;

class num
{
public:
    num()
    {
        n=1;
        cout<<"构造函数执行"<<endl;
    }
    num (const num &s)
    {
        this->n=s.n;
    cout<<"复制构造函数执行"<<endl;
    }
   
    num(int i)
    {
        n=i;
    cout<<"构造函数执行"<<endl;
    }
    ~num()
    {
        cout<<"析构函数执行"<<endl;
    }
    int get()const
    {
        return n;
    }
    void set(int x)
    {
        n=x;
    }
    void add()
    {
        n++;
    }
  
    num &operator++()
    {
        ++n;
        return *this;
    }
    num &operator++(int n)
    {
        num temp(*this);
        ++(this->n);
        return temp;
    }

private:
    int n;
};



int main()
{
    num i;
    cout<<"i:"<<i.get()<<endl;
    num x;//调用构造函数
    x=++i;//默认赋值构造函数
    //num x=++i;//默认拷贝构造函数
    cout<<"x:"<<x.get()<<endl;
    cout<<"i:"<<i.get()<<endl;
    x=i++;
    cout<<"x:"<<x.get()<<endl;
    cout<<"i:"<<i.get()<<endl;
    return 0;
}

2011-10-13 16:20
快速回复:请各位帮我看下下面的程序,怎么运行的啊
数据加载中...
 
   



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

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