微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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
}

原文地址:https://www.jb51.cc/c/117518.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐