注册 登录
编程论坛 C++教室

关于函数返回值的问题,新手求高手指点

xlhcy2014 发布于 2014-03-12 20:50, 367 次点击
程序代码:
#include<iostream>
using namespace std;
class A
{
public:
    A(){cout<<"执行构造函数\n";}
    A(A&){cout<<"执行复制构造函数\n";}
    ~A(){cout<<"执行析构函数\n";}
    void print(){cout<<"x="<<x<<endl;}
    void set(int i){x=i;}
private:
    int x;
};

const A & func(const A & one);

int main()
{
A a;
//A b=func(a);             //这样写不行,提示说不能把 const class A转换成 class A
// const A c=func(a);        //这样写也不行,提示也说不能把 const class A转换成 class A,到底怎么回事?
return 0;
}
const A & func(const A &one)
{
return one;
}

//A b=func(a);             //这样写不行,提示说不能把 const class A转换成 class A
// const A c=func(a);        //那我这样写也不行,提示也说不能把 const class A转换成 class A,到底怎么回事?
我是用的是VC6.0的编程环境。
2 回复
#2
xlhcy20142014-03-12 21:09
自己弄明白了  。
应该写成
const A & c=func(a);
#3
rjsp2014-03-13 11:11
其实你应该将
A(A&){cout<<"执行复制构造函数\n";}
改为
A(const A&){cout<<"执行复制构造函数\n";}

不知道你看的是什么破书
1