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

在函数前加const时什么意思啊

yy7software 发布于 2011-10-13 11:55, 3208 次点击
在函数前加const是什么意思哇?像const num& operator++(){}  num x=++i;可以。 而 num x=++++i;则不可以,为什么? 谢谢
8 回复
#2
pangding2011-10-13 21:37
表示返回的是常量。
int f() 返回的就是 int
const int f() 返回的就是 const int。
如果是
int & f() ,返回的就是 int 的引用。

第二个问题,就有点……

#3
yy7software2011-10-14 01:18
额,,谢谢哈,
#4
yy7software2011-10-14 01:55
  
只有本站会员才能查看附件,请 登录
#5
yy7software2011-10-14 01:56
这个怎么用哦 不会,,
程序代码:
#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;}
   
private:
    int n;
};
int main()
{
    num i;
    cout<<"i:"<<i.get()<<endl;
    num x=++i;        //为什么执行这里会执行一次复制构造函数?
   
// 把上面x=++i;换成num x=++++i;怎么不能执行;如果去掉opertor前面的const就可以
    cout<<"x:"<<x.get()<<endl;
    cout<<"i:"<<i.get()<<endl;
   
    return 0;
}


#6
mengcan5552011-10-14 09:49
num x=++i;
这句话是先执行运算符++重载函数,再进行对象赋值,肯定要执行构造函数了
#7
mengcan5552011-10-14 09:49
上面说错了,是复制构造函数
#8
yy7software2011-10-14 10:17
额 哈哈 谢了
#9
yy7software2011-10-14 10:19
为什么将num=++i换成num x=++++i;出错呢?
1