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

前端之家收集整理的这篇文章主要介绍了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&C++相关文章