VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
类对象成员函数的const增强

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

类对象成员函数的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类型成员函数中试图改变类成员数据的值。




相关文章

相关软件