读书人

在参数调用中const与非const的区别是

发布时间: 2012-02-19 19:43:38 作者: rapoo

在参数调用中,const与非const的区别是什么
eg:
Table::Table(const char *fn, const char *ln,bool ht)
{
...
}

Table::Table(char *fn, char *ln,bool ht)
{
...
}
两者在返回值上有什么区别呢?

[解决办法]
函数参数中的const
对于一些函数中的指针参数,如果在函数中只读,请将其用const修饰,这样,别人一读到你的函数接口时,就会知道你的意图是这个参数是[in],如果没有const时,参数表示[in/out],注意函数接口中的const使用,利于程序的维护和避免犯一些错误。虽然,const修饰的指针,如:
const char* p,
在C中一点用也没有,因为不管你的声明是不是const,指针的内容照样能改,因为编译器会强制转换,但是加上这样一个说明,有利于程序的阅读和编译。因为在C中,修改一个const指针所指向的内存时,会报一个Warning。这会引起程序员的注意。

C++中对const定义的就很严格了,所以C++中要多多的使用const,const的成员函数,const的变量,这样会对让你的代码和你的程序更加完整和易读。
[解决办法]
两种写法的区别:
Table::Table(char *fn, char *ln,bool ht)
{
...
}
一切正常,随便你玩
Table::Table(const char *fn, const char *ln,bool ht)
{
...
}
const char *fn和 const char *ln是一个意思,就是你不可以修改fn指向的内容,就是说
*fn = ***是错误的,
而fn = ***是可以的
所以你可以改变fn,ln, ht的值,并都可以作为返回值,
加上const是为了防止你修改fn和ln所指向的内容, 所以一般来说,fn和ln只会用在处理中,就算返回,也会是被指向了其他的地方

读书人网 >C++

热点推荐