c函数语法/原型 – 括号后的数据类型

我非常熟悉C/C++标准函数声明.我最近看到过这样的事情:
int myfunction(char parameter) const

以上只是一个假设的例子,我甚至不知道它是否有意义.我指的是参数之后的部分.常数.这是什么?

一个更真实的例子:

wxGridCellCoordsArray GetSelectedCells() const

这可以找到here
那么文本const到底在做什么呢?

解决方法

const关键字在函数之后显示,保证函数调用者不会更改任何成员数据变量.

比如给这个班级,

// In header
class Node {

public:

Node();

void changeValue() const;

~Node();

private:

int value;

};

//在.cpp

void Node::changeValue() const {
    this->value = 3; // This will error out because it is modifying member variables
}

这条规则有一个例外.如果声明成员数据变量是可变的,则无论函数是否声明为const,都可以更改它.使用mutable是因为对象被声明为常量的罕见情况,但实际上有成员数据变量需要更改选项.其使用的一个潜在示例是缓存您可能不想重复原始计算的值.这通常很少见……但要注意它是件好事.

比如给这个班级,

// In header
class Node {

public:

Node();

void changeValue() const;

~Node();

private:

mutable int value;

};

//在.cpp

void Node::changeValue() const {
    this->value = 3; // This will not error out because value is mutable
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...