在阅读用C++编写的教程和代码时,我经常会遇到const关键字。
我看到它的用法如下:
const int x = 5;我知道这意味着x是一个常量变量,并且可能存储在只读内存中。
但是什么是
void myfunc( const char x );和
int myfunc( ) const;发布于 2010-11-01 01:56:25
void myfunc(const char x);这意味着参数x是一个字符,它的值不能在函数内部更改。例如:
void myfunc(const char x)
{
char y = x; // OK
x = y; // failure - x is `const`
}对于最后一个:
int myfunc() const;这是非法的,除非它在类声明中- const成员函数防止修改任何类成员- const非成员函数不能使用。在这种情况下,定义如下:
int myclass::myfunc() const
{
// do stuff that leaves members unchanged
}如果您有需要在const成员函数中修改的特定类成员,则可以将其声明为mutable。例如,成员lock_guard使类的const和非const成员函数成为线程安全的,但是必须在它自己的内部操作期间更改。
发布于 2010-11-01 01:57:10
第一个函数示例或多或少是没有意义的。更有趣的是:
void myfunc( const char *x );这告诉编译器*x的内容不会被修改。也就是说,在myfunc()中,您不能执行以下操作:
strcpy(x, "foo");第二个示例是关于C++成员函数的,这意味着对象的内容不会被调用更改。
因此,给定以下内容:
class {
int x;
void myfunc() const;
}someobj.myfunc()不允许修改以下内容:
x = 3;发布于 2010-11-01 01:56:06
这一点:
void myfunc( const char x );意味着您不能在函数内部更改x,即这是非法的:
void myfunc( const char x ) {
x = ...;
}而:
int myfunc() const;只有当myfunc()是类中的一个方法时才有意义;这基本上意味着该方法不能修改类实例(即调用instance.myfunc()前后实例的状态是相同的)。
https://stackoverflow.com/questions/4064286
复制相似问题