先上代码
// funcConst.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class TwoData
{
public:
void func(int x,int y)
{
i=x;
j=y;
}
void print() const
{
cout<<"i*j="<<i*j<<endl;
}
private:
int i;
int j;
};
int _tmain(int argc, _TCHAR* argv[])
{
TwoData TD;
TD.func(3,8);
TD.print();
return 0;
}
首先,介绍const成员函数的作用,const成员函数主要的作用就是让不让我们的成员函数进行修改我们的class类内部的成员变量,我们知道,class内部的成员函数可以访问class 内部变量。
因此如果函数func修改为void func(int x,int y) const{ i=x;j=y;}将会报错,因为他修改了内部数据的变量的值。报错信息如下:
1>d:\workspace\visual studio 2005\projects\funcconst\funcconst\funcconst.cpp(14) : error C2166: l-value specifies const object 1>d:\workspace\visual studio 2005\projects\funcconst\funcconst\funcconst.cpp(15) : error C2166: l-value specifies const object
函数print 就是用const修饰的。因此,任何不会修改数据成员的函数都应该声明为const 类型。