新闻中心

EEPW首页 > EDA/PCB > 设计应用 > const在函数声明中的应用

const在函数声明中的应用

作者:时间:2012-08-28来源:网络收藏

1.在一个声明中,cONST 可以修饰的返回值,或某个参数;对于成员,还可以修饰是整个函数。有如下几种情况,以下会逐渐的说明用法:

本文引用地址:http://www.eepw.com.cn/article/189991.htm

A perator=( A a);

void fun0( A* a );

void fun1( ) ; // fun1( ) 为类成员函数

const A fun2( );

1) 修饰参数的const,如 void fun0(const A* a ); void fun1(const A a);

调用函数的时候,用相应的变量初始化const常量,则在函数体中,按照const所修饰的部分进行常量化,如形参为const A* a,则不能对传递进来的指针的内容进行改变,保护了原指针所指向的内容;如形参为const A a,则不能对传递进来的引用对象进行改变,保护了原对象的属性。

[注意]:

参数const通常用于参数为指针或引用的情况,且只能修饰输入参数;若输入参数采用“值传递”方式,由于函数将自动产生临时变量用于复制该参数,该参数本就不需要保护,所以不用const修饰。

[总结]:

对于非内部数据类型的输入参数,因该将“值传递”的方式改为“const引用传递”,目的是为了提高效率。例如,将void Func(A a)改为void Func(const A a)

对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。例如void Func(int x)不应该改为void Func(const int x)

2) 修饰返回值的const,如const A fun2( ); const A* fun3( );

这样声明了返回值后,const按照修饰原则进行修饰,起到相应的保护作用。const Rational operator*(const Rational lhs, const Rational rhs)

{

return Rational(lhs.numerator() * rhs.numerator(),

lhs.denominator() * rhs.denominator());

}

返回值用const修饰可以防止允许这样的操作发生:Rational a,b;

Radional c;

(a*b) = c;

一般用const修饰返回值为对象本身(非引用和指针)的情况多用于二目操作符重载函数并产生新对象的时候。



上一页 1 2 下一页

关键词: const 函数 中的应用

评论


相关推荐

技术专区

关闭