类对象成员函数的const增强

原创 2001年05月04日 14:04:00
类对象成员函数的const增强

C++语言的2.0版为const配置了若干新的应用,在C++的早期版本中,成员函数的调用可能改变const类对象的值。这肯定是个问题了。如果我们不允许使用const类的成员函数,我们还要const对象干什么用,为了让语言成为完备的,在2.0版本后引入了const成员函数,它的一个作用就是让const对象能够调用的成员函数。编译程序保证const成员函数不改变成员函数内使用的对象内部数据的值,而且还保证了const类的对象能够使用const类型的函数。下面我们来看一段代码:

struct s{

int a;
f(int aa) { return a = aa; }
g(int aa) const { return aa; }  //请注意,这个函数并没有改变作为类成员数据的a的值
//h(int aa) const { return a = aa; } //这一句是错误的,因为它试图改变类的成员数据a的值

};

void g()
{

s o1;
const s o2;  //请注意,这里的是一个const类型的对象;
o1.a = 1;
// o2.a = 2;
o1.f(3);
//o2.f(4);  //在const类型对象中试图调用非const类型的成员函数;
o1.g(5);
o2.g(6);

}

如果我们把一些注释掉的语句恢复过来,我们会发现,这样的程序是不能通过编译的。因为它们不是试图调用const类型对象中的非const类型函数,就是在const类型成员函数中试图改变类成员数据的值。

C++回顾之const对象、const成员函数、mutable类型

总结const的各种用法,主要讲述const对象,及const 成员函数,还有mutable修饰的数据成员...
  • ab198604
  • ab198604
  • 2014年02月08日 11:02
  • 3495

非const对象也可以调用const成员函数

当一个类只有const成员函数的时候,非const对象也可以调用const成员函数: // ConstTest.cpp : 定义控制台应用程序的入口点。 // #include "stdaf...
  • djb100316878
  • djb100316878
  • 2014年12月31日 16:10
  • 2982

C++ const 修饰成员函数

看到const 关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const更大的魅力是它可以修饰函数的参数...
  • zheng19880607
  • zheng19880607
  • 2014年04月16日 22:56
  • 3949

C++ 笔记_类的成员函数以及const的作用

类内部,声明成员函数是必须的,而定义成员函数则是可选的,在类内部定义的函数默认为inline。在类外部定义的成员函数必须指明他们是在类的作用域中,将关键字const添加到函数形参后面,就可以将成员函数...
  • wsr123wsrwsr
  • wsr123wsrwsr
  • 2016年11月02日 22:18
  • 358

C++面向对象编程(三) 常成员函数 (带const修饰的类成员函数)

声明:函数名(参数表)const            //常成员函数 说明: const是函数类型的一部分,在实现部分也要带该关键字。 常成员函数不能修改类的成员变量。因为const修饰就是this...
  • Winge_Fish
  • Winge_Fish
  • 2015年07月23日 04:28
  • 572

能不能同时用static和const修饰类的成员函数?

我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。   请问:能不能同时用static和cons...
  • bxyill
  • bxyill
  • 2012年12月27日 16:38
  • 5240

成员函数后面加上const的作用

函数后面加const 编译器会自动给每一个函数加一个this指针。在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量的(加了mutable修饰的除外,后面有讲)。实际上...
  • wang19890326
  • wang19890326
  • 2013年04月05日 21:14
  • 775

this与const成员函数不得不提二三事

在编写C++代码时,由于个人习惯的不同,成员函数定义时(若有成员的调用),有些人喜欢指明this指针,而有些人又不乐意写this。当然,提这个并不是要说个人习惯的好坏,不知你是否想过:使用this时,...
  • oYinGui1
  • oYinGui1
  • 2014年06月07日 23:02
  • 1525

Const---【const对象和const成员函数及const成员属性总结】

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 在校学生 * All rightsreserved. * 文件名称: const总结.cpp * 作 者:刘旺 * ...
  • u012706758
  • u012706758
  • 2014年03月16日 18:39
  • 966

【c++笔记七】教你使用"const类型的对象、成员函数"和"static类型的成员函数、变量"

通过本文我们学到了: const对象、成员函数的使用方法,static成员变量、函数的原理和应用。 最后通过单例模式的例子把我们前面所讲到的知识点稍微串起来了一下,算是复习了。...
  • zmyoukonw
  • zmyoukonw
  • 2015年01月28日 21:05
  • 1172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:类对象成员函数的const增强
举报原因:
原因补充:

(最多只允许输入30个字)