成员函数const(c++中关于const的问题)

本文目录
c++中关于const的问题
使用const限定的成员函数不能改变类的成员变量的值,主要是为了保护成员变量不在该函数中被更改。
例如,有一个成员变量int
a,获得成员变量a的函数
int
void
get_a()const;
这里const表示get_a这个函数不能够更改类的成员变量的值,但是可以使用,所以这时如果get_a的实现是:
int
void
get_a()
{
return
a;
}
这样就不会出错,而如果是:
int
void
get_a()
{
a=1;
return
a;
}
这样就会报错,因为函数改变了成员变量的值。
const限定函数的作用是在大型工程中保证封装性,不能随意暴露成员变量,成员变量的更改必须保证在特定函数,使用特定方法,只有这样,才能保证软件的安全性。
const类型的成员函数内部如何改变成员变量
通过指针也能实现。在C++中,由const修饰的成员函数的函数体内部,是不能够对成员变量进行修改的。这个特性被用来保证某些成员函数在实现过程中,避免由于程序员大意而对数据进行了错误的修改;同时也说明此成员函数是非修改性的。如只需要返回成员变量的成员函数就被声明为const类型(const的位置在函数定义参数列表之后)推广开来,在const成员函数中也不能够调用非const的成员函数。这是因为非const成员函数可能会改变成员变量的值,这与const成员函数的定义相违背。但是在某些情况下,需要在const函数中改变成员变量。这就需要把成员变量设置成mutable类型。如class C{public:void func(const int& p) const{i = p;}private:mutable int i;};如果变量i不声明为mutable类型,则编译不会通过。如果成员变量是一个类类型或者结构类型,而在const函数中调用这些变量的成员函数,除了用mutable声明外,还可以用一种变通的方法:class D{public:void op(){}}class C{public:void func(const int& p, D& d) const{i = p;d.op();}private:mutable int i;D cd;};然后在调用时,参数D& d以*this作为输入,也可以达到调用非const函数的作用。P.S 最近阅读相关的文章,又学到了一种方法,能够使得在const成员函数中调用非const成员函数。就是使用const_cast《运算符。它能够使得const去掉const的属性,使得violate属性去掉violate属性。上面的例子就可以写成。

更多文章:
placeholder函数(angular2失去焦点函数怎么写)
2026年9月25日 11:20
frighten的用法与搭配(关于frighten,fear,afraid,scared这4个单词的用法)
2026年9月25日 08:30
goto语句对程序的什么有很大的破坏作用(c语言初学者,试用goto语句出现问题,求解释)
2026年9月25日 08:20
站长素材iphone音效(有没有什么网站有免费的背景音乐,音效下载的网站,不要百度一搜前面那几个,那几个都看过了,没合适的)
2026年9月25日 08:10
单片机c语言简单程序(编写简单的单片机c语言程序 1、指定数组找最大值 2、排序)
2026年9月25日 07:00
霹雳布袋戏都有哪些(霹雳布袋戏顺序 霹雳布袋戏观看顺序是什么)
2026年9月25日 02:30
extend和extend的区别(expand与extend问题)
2026年9月25日 02:20



