概述
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关键字作用之一,提高函数的健壮性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复