c++ operator 的CONST应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ operator 的CONST应用相关的知识,希望对你有一定的参考价值。
operator 用CONST锁定以后, NUM B=++i就会报错,但是 上面的 ++i就没有报错,这是为什么?
#include <iostream>
using namespace std;
class num
public:
num()n=5;cout<<"构造函数执行\n";
num(num&s)this->n=s.n;cout<<"复制构造函数\n";
~num()cout<<"析构函数执行\n";
// num(int x)n=x;cout<<"带参数的构造函数\n";
int get()return n;
void set(int i)n=i;
num& operator++()
++n;
return *this;
/*num operator++()
++n;
num t;
t.set(n);
return t;
*/
private:
int n;
;
int main()
num i;
//num b=++++++i;
++i;
num b=++i;
cout<<b.get()<<endl;
return 0;
下面那位大神麻烦再通俗一点,菜鸟刚学,看不懂
这里明显的问题是出在你将++i返回的const num&类型传入了拷贝构造函数,但是系统找不到使用const num&类型的对应重载,因此显示此错误。请将拷贝构造函数进行重载增加num(const num&)或者只提供后者(当拷贝不涉及修改源的情况下)。
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
class num
public:
num(int);
num(const num&);
num(num&);
~num();
int n;
const num& operator++()
++n;
return *this;
;
num::num(int a)
n=a;
num::num( const num& b)
this->n=b.n;
cout<<"here is the cpc\n";
num::num( num& b)
this->n=b.n;
cout<<"here is the cpc\n";
int main()
num a(1);
++a;
num b=++a;
system("pause");
return 0;
参考技术A 函数返回值为 const 只有用在函数返回为引用的情况。 函数返回值引用常量表示不能将函数调用表达式作为左值使用。
虽然我看你的错不像是这种类型。。。 参考技术B const num b=++i;应该可以吧!
我没时间把你的程序重新打一遍。只是猜测。
题主把程序贴出来吧!我也很感兴趣呢!
以上是关于c++ operator 的CONST应用的主要内容,如果未能解决你的问题,请参考以下文章
为啥在向量类中实现 operator= 时返回 const 引用
为啥这个函子的 operator() 需要尾随 const 修饰符?