成员函数定义后面加 const 的意义】的更多相关文章

我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值.如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性.其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理. c++ 函数前面和后面 使用const 的作用: 前面使用const 表示返回值为const 后面加 const表示函数不可以修改class的成员 (仅为可读,不可写…
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值.如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性.其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理. const成员函数和const对象 实际上,const成员函数还有另外一项作用,即常量对象相关.对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以…
http://blog.csdn.net/gmstart/article/details/7046140 在C++的类定义里面,可以看到类似下面的定义: 01 class List { 02 private: 03      Node * p_head; 04      int length; 05      …… 06 Public: 07      int GetLength () const; 08      bool GetNodeInfo(const int index,Node &…
原则:类的成员函数在小括号后大括号前加上 const ,代表不准备改变对象的数据.不加的话代表有可能会改变对象的数据. 1.当常量对象,就是加上const修饰的类的成员去调用常量成员函数时,这表示:对象的初始化数据一定不能改变,常量成员函数说:放心,我不会改变你的初始化数据的,这一切都很好. 2.当常量对象调用没加const修饰的类的成员函数时,这表示:对象的初始化数据一定不能改变,非常量成员函数说:我不能保证哦!完犊子,没商量好,这要出问题. 3.当非常量对象调用常量成员函数时,这表示:对象的…
看了很多帖子,但是都不能理解,又去看了很多资料,终于名白了.记下备忘. 问题:php在声明函数时,函数名前面的&符号有什么用? 一直想不通.很多帖子说类似于变量的$a=&$b,但是$b在声明的时候前面可没有加&符号啊?那么这个函数名前面加&有什么用呢? 很多人看的都是网上的例子,先用网上例子试一下: function &test(){     static $b = 0;  //声明一个静态变量     $b = $b+1;     return $b;     }…
举个例子: 定义了一个类的const实例,怎么让他也能调用非能调用非const成员函数class foo{public:void test1() {cout << "I am not a const member function" << endl;}void test2()const {foo *temp = (foo*)this;//注意这个转换!!!temp->test1();}}; int main() {foo f;f.test2();retur…
转载:http://www.cnblogs.com/little-sjq/p/9fed5450f45316cf35f4b1c17f2f6361.html C++ Primer 第07章 类 7.1.2 ​Sales_data类的定义如下: #ifndef SALES_DATA_H #define SALES_DATA_H #include <string> #include <iostream> class Sales_data { public: std::string isbn…
1.成员函数的第一种定义方式:在类声明中只给出成员函数的原型,而将成员函数的定义 放在类的外部. 返回值类型 类名::成员函数名(参数表) {      函数体  } class Point{ public: void setpoint(int,int); //设置坐标点的成员函数setpoint的函数原型 int getx(); //取x坐标点的成员函数getx的函数原型 int gety(); //取y坐标点的成员函数gety的函数原型 private: int x,y; }; void P…
通过把类成员函数声明为const   以表明它们不修改类对象. 任何不会修改数据成员的函数都应该声明为const类型.如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这样做的好处是提高程序了的健壮性.…
先给出一段代码 class A { int *x; public: int *f() const { return x; } }; 成员函数f返回指向私有成员 x 的非常量指针,我认为这会修改成员x ,对吧? f 是 const成员函数,我应该在返回类型前面添加 const 吗? const成员函数应该保证的是,它不能更改任何数据成员. 就我而言,函数 f 并没有修改类A 的数据成员x ,但可以修改x 指向的内容,所以我的问题是,这是否违反了const函数应保证的内容? 回答: const 成员…