c++类中的const关键字

类的const成员函数

 

如果为类成员函数,他表示

 

(1)不能修改成员变量; 
(2)不能调用非const函数; 
(3)其他const函数可以调用它;(其他非const函数当然也可以调用它) 
(4)可以被const对象(或引用用指针)上调用,比如:const   A   a;   a.f(),也可以被普通对象调用。

 

  const成员函数中的const可以有三个位置:

  • const修饰this指针   

  这种情况是成员函数特有的,如果是普通的函数,则不可以。

格式:   return_class   function_name(parameter_list)   const 
作用:   使其函数不能修改数据成员.如果函数中试图修改数据成员.编译器会在编译时发现错误. 

class A
{
public:
	A myfun() const
	{
		a++;//error C3490: 由于正在通过常量对象访问“a”,因此无法对其进行修改
	}

private:
	int a;

};

  此处的const是用来修饰this指针的,即const成员函数不可以修改类的成员变量。

  • const修饰返回值

  格式:   const   return_class   function_name(paramter_list) 
  作用: 使函数的回返值不被修改. 

  例如:

  A   A::operator+(A   object) //重载运算符+
  A   m,n,k 
  (m+n)=k      //这里由于函数没有用const.所以这里m+n产生的临时变量允许修改. 

  const   A   A::operator   +(A   object) 
  (m+n)=k      //编译器提示错误.const函数是不允许修改返回对象的 

  • 使用const参数 

       格式   return_class  function_name (const class& object )
       作用:

    1使用const限定符和class&   object形式组合作为参数传递给函数是一种良好的习惯.可以提高效率.class&   object将用引作为参数时,系统不用再为参数建立临时对象,提高了效率.

    2加上限定符const就可以保证用引变量不会被修改.从而实现了值传递,而且还减少了系统开销 。

posted @ 2016-11-01 20:24  ren_zhg1992  阅读(171)  评论(0)    收藏  举报