无需typedef,返回裸函数指针的const成员函数声明语法
带const限定的函数指针Getter编写方法
首先看你的类定义:
class ExampleClass { private: double(*_binaryFunction)(double, double); };
直接声明const Getter的写法
非const版本的Getter声明是:
double (*GetBinaryFunction())(double, double);
要给这个Getter加上const限定,必须把const关键字放在成员函数的参数列表之后,你写的以下写法是正确的:
double (*GetBinaryFunction() const)(double, double);
这里的const修饰ExampleClass的实例,确保调用该Getter时不会修改类的成员变量,完全符合const成员函数的规则。
使用typedef简化的写法
用typedef封装函数指针类型后,写法会清晰很多,你给出的代码是完全正确的:
typedef double (*BinaryFunction)(double, double); BinaryFunction GetBinaryFunction() const;
typedef把复杂的函数指针类型简化为BinaryFunction,此时const直接放在成员函数声明末尾,和普通成员函数的const限定写法一致,可读性更强,推荐使用这种方式。
内容的提问来源于stack exchange,提问作者Jan Hošek
相关产品推荐
相关产品推荐

