| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:刚学C++ 遇到个问题,求好心人解答。
只看楼主 加入收藏
xlhcy2014
Rank: 2
等 级:论坛游民
帖 子:33
专家分:81
注 册:2014-2-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
刚学C++ 遇到个问题,求好心人解答。
程序代码:
#include<iostream>
using namespace std;
class num
{
public:
    num(){n=1;cout<<"默认构造函数\n";}
    num(int i){n=i;cout<<"带参数的构造函数\n";}
    num(num &a){this->n=a.n;cout<<"copy\n";}
    ~num(){cout<<"the end\n";}
    int get()const{return n;}
     num & operator ++() //这里,我本来是想按引用返回,避免产生*this的副本,但最后还是产生了,为什么加了引用都不行? 如何不创建副本或拷贝。
    {
    ++n;
    return *this;
    }
private:
    int n;
};
int main()
{
    num i;
    cout<<"i:"<<i.get()<<endl;
    num ab=++i;
    cout<<"i:"<<ab.get()<<endl;
    return 0;
}


[ 本帖最后由 xlhcy2014 于 2014-3-8 23:34 编辑 ]
2014-03-08 23:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:20 
这个拷贝构造发生在 构造ab 时,和 ++i 屁关系都没有
不信你可以将 num ab=++i; 改为 num ab = i; 试试

2014-03-10 08:32
快速回复:刚学C++ 遇到个问题,求好心人解答。
数据加载中...
 
   



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

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