const是什么意思?

qq25539088 2009-04-30 09:22:49
#include <iostream>
using namespace std;
class A
{
public:
void func(int x,int y)
{
i=x;
j=y;
}
void print()const{cout<<"两数之间的乘为:"<<i*j<<endl;}
private:
int i,j;
};
int main()
{
A a;
a.func(1,2);
a.print();
A b;
b.func(3,4);
b.print();
return 0;
}


---------
以上代码加了const 这个const到底是什么意思?能否说详细一点!谢谢!
...全文
796 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
自律则自由 2009-05-01
  • 打赏
  • 举报
回复
const是指常量,用它修饰了的变量是不能修改的。
如:
* const p;表明这个指针的地址不可改变。
const *p; 表明这个指针的所指的对象不可改变。
void print()const{cout < <"两数之间的乘为:" < <i*j < <endl;} 用const定义了那么这个函数就是不可改变的。
jackzhhuang 2009-04-30
  • 打赏
  • 举报
回复
成员函数后面加const是指:函数不改变对象的成员数据。
Jalien 2009-04-30
  • 打赏
  • 举报
回复
const意思是常量,不可改变。
若放在方法()后则表示这个方法的方法体不能对调用这个方法的对象试图修改,该方法内也不能调用非const方法,因为那样有可能间接修改对象的状态,编译器是不允许的,编译时就会给出出错信息。

void print()const{cout < <"两数之间的乘为:" < <i*j < <endl;}
这个意思是不能在方法内修改i j的值
事实上这种const是给程序员使用的,程序员通过在方法后加上const,这样一旦他在方法内对对象的属性进行修改时编译器就会给出出错信息,从而保证了不对属性修改,因为这有时候是必须的,程序员可能不希望在这个方法内修改对象。

const方法既可被const对象调用,也可被非const对象调用,但const对象只能调用const方法
因此,当你不想在某个方法内改变对象的状态时,将这个方法定义为const方法是很有用的,这也是C++的一种安全机制


至于方法前的const则是说明返回的值是常量,不能作为左值,返回值不能被修改
tangxu12 2009-04-30
  • 打赏
  • 举报
回复
楼上 都说完了 我还说什么!
  • 打赏
  • 举报
回复
void print()const{cout < <"两数之间的乘为:" < <i*j < <endl;}

这个const表示print这个函数体里不能发生成员变量的改变、。
lpf000 2009-04-30
  • 打赏
  • 举报
回复
常成员函数,不能改变函数内变量的值;
常对象只能调用常成员函数,非常对象可以调用常成员函数。。
flameearth 2009-04-30
  • 打赏
  • 举报
回复

const成员函数

  const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。有人可能会问:为什么不将const放在函数声明前呢?因为这样做意味着函数的返回值是常量,意义完全不同。下面是定义const成员函数的一个实例:

  class X

  {

   int i;

   public:

   int f() const;

  };

  关键字const必须用同样的方式重复出现在函数实现里,否则编译器会把它看成一个不同的函数:

  int X::f() const

  {

   return i;

  }

  如果f( )试图用任何方式改变i或调用另一个非const成员函数,编译器将给出错误信息。任何不修改成员数据的函数都应该声明为const函数,这样有助于提高程序的可读性和可靠性。


原文一部分出于:http://hi.baidu.com/wangysh/blog/item/e54f0b30a4a14f9ba8018e64.html


pengzhixi 2009-04-30
  • 打赏
  • 举报
回复
你这里的const的意思就是这个函数不可修改数据成员。
liliangbao 2009-04-30
  • 打赏
  • 举报
回复
void print()const{cout < <"两数之间的乘为:" < <i*j < <endl;}
常量成员函数:就是该函数不允许修改(可以使用)类的数据成员~
OenAuth.Net 2009-04-30
  • 打赏
  • 举报
回复
简单点:const说明print()这个函数不会修改也不能修改类A的成员变量
lingyin55 2009-04-30
  • 打赏
  • 举报
回复
const表示常量,也就是说值是不能被修改的。
这里的const是修改print函数
为了使成员函数的意义更加清楚,可在不改变对象的成员函数的函数原型中加上const说明
const成员函数应该在函数原型说明和函数定义中都增加const限定

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧