我是靠谱客的博主 精明茉莉,最近开发中收集的这篇文章主要介绍C++中const关键字作用之一,提高函数的健壮性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C++中const关键字作用之一,提高函数的健壮性

使用const提高函数的健壮性:
const可用于修饰函数参数,返回值,函数定义体,被const修饰的东西都受到强制保护,用来预防意外的变动。

const修饰函数的参数:
1、如果参数是用来被输出的,就不能用const修饰参数了。

2、当参数作为输入时,加const修饰可以防止意外改动该参数。
例如:
void StringCopy(char strDestination, const char strSource);
strSource是输入参数,strDestination是输出参数,前者不可以加const修饰,因为函数的目的就是为了改变它,后者需要加const进行保护,防止它被改变。

3、输入参数采用了“值传递”时,函数会自动产生临时变量,参数无需保护,不用加const。
例如:void foo(int value);

4、对于非内部数据类型的参数而言,需要传入值时,让函数产生临时变量,调用构造和析构是消耗时间和资源的,为了提高效率,可以将值传递改变为引用传递,为了保护传入的引用不被改变,需要加上const进行修饰。
例如:
void foo(A value);//值传递,产生临时变量。
void foo(const A &value);//引用传递,无临时变量,const保护。
对于内置数据类型的参数不存在构造,析构的过程,复制也非常快,值传递和引用传递效率相当。

const修饰函数的返回值:
1、返回值为指针时加const修饰,会返回一个const型指针,该指针必须通过const指针接收。
例如:
const char *GetChar(void);
char *str = GetChar(void);//会报错
const char *str = GetChar(void);//正确用法

2、返回值为值时,由于函数会把返回值复制到外部临时的存储单元中,加const毫无用处。
例如:

int GetInt(void);//正常
const int GetInt(void);//多此一举
自定义数据类型同理。

3、返回值为引用时,一般常出现在类的赋值函数中,目的是为了实现链式表达。
例如:

class A
{
A &operator = (const A &other);//赋值函数
};
A a,b,c;
a = b = c;//正常的链式表达
cout<<“1”<<“2”<<“1”<<“2”<<“1”<<“2”<<endl;//正常链式表达

const修饰成员函数:
1、任何不会修改数据成员的函数都应该被声明为const类型。
2、const修饰的函数可有效避免程序员无意间修改数据,或者调用其他非const成员函数的行为,提高程序健壮性。只需要放在函数参数列表后的尾部就可以。
例如:
class A
{
public:
int GetData() const;
private:
int m_data;
};
int A::GetData() const
{
return m_data;
}

最后

以上就是精明茉莉为你收集整理的C++中const关键字作用之一,提高函数的健壮性的全部内容,希望文章能够帮你解决C++中const关键字作用之一,提高函数的健壮性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部