请问类里的const成员函数问题

discory 2006-04-06 06:55:44
exp:
class A
{
public:
a();
A x() const{i+=4};//这里,const怎么理解
...
private:
i;
}

const不是定义一个常量吗,这里const是对x()的直不变吗。不太明白.
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
discory 2006-04-07
  • 打赏
  • 举报
回复
哦,明白,就是对调用数据成员,数据成员的直是const,对吗,就是i的直不能改变,
那么我这个程序是错的
jixingzhong 2006-04-07
  • 打赏
  • 举报
回复
const不是定义一个常量吗,这里const是对x()的直不变吗。不太明白.
------------------------------
不是对 x()的直不变 ,
是对这个类的数据成员的值不变 ....
AllenCpp 2006-04-07
  • 打赏
  • 举报
回复
你这里的语法是错误的
因为有const 修饰,所以不能修改变量i
rickerliang 2006-04-07
  • 打赏
  • 举报
回复
当你初始化一个const对象时,只能调用该对象的const成员函数,所以不改变对象内数据成员的值的成员函数一般声明为const
sankt 2006-04-06
  • 打赏
  • 举报
回复
常成员函数

  使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象。常成员函数说明格式如下:

  <类型说明符> <函数名> (<参数表>) const;

其中,const是加在函数说明后面的类型修饰符,它是函数类型的一个组成部分,因此,在函数实现部分也要带const关键字。下面举一例子说明常成员函数的特征。

#include
class R
{
public:
R(int r1, int r2) { R1=r1; R2=r2; }
void print();
void print() const;
private:
int R1, R2;
};

void R::print()
{
cout< }

void R::print() const
{
cout< }

void main()
{
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
}


  该例子的输出结果为:

  5,4
  20;52

  该程序的类声明了两个成员函数,其类型是不同的(其实就是重载成员函数)。有带const修饰符的成员函数处理const常量,这也体现出函数重载的特点。
逸学堂 2006-04-06
  • 打赏
  • 举报
回复
class A
{
public:
a();
A x() const{i+=4};//这里,const怎么理解
// 简单的说这里的const防止在x函数内修改类A内变量i。
// 其具体操作是加到const函数(必须是类内函数才有效)
// 类内函数都有一个this指针,其实这个const是加到this身上的
// 所以this内的变量不可修改,具体参考
// www.exuetang.net内关于《深入讨论this指针》有更纤细的讨论
...
private:
i;
}
khzhang 2006-04-06
  • 打赏
  • 举报
回复
防止修改成员函数
相似的有:const A x() 这代表函数返回值为常量
minico 2006-04-06
  • 打赏
  • 举报
回复
你那个例子应该是个说明是个错误的例子,
就是为了说明const成员函数不能改变成员变量;
它里面对i进行修改,肯定编译不过的
minico 2006-04-06
  • 打赏
  • 举报
回复
C++里面可以定义const成员函数的;
它的作用是防止修改成员变量,
比如那些只是输出信息的函数可以定义成const成员函数,
这些是基础的c++知识点,建议楼主系统学习一下.

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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