在类成员函数后面加const关键字用于声明const成员函数,它不能改变类的成员变量,也不能调用该类中普通的成员函数,最好不要涉及非const的成员变量
const成员变量只能通过成员列表初始化进行初始化,任何成员函数均不能改变它的值
只能调用const成员函数访问const对象,那是它的唯一对外接口
若不希望传入的实参对象被修改,应该将形参定义为const的指针变量或者引用
const成员函数的定义是这样形式:1
int getConst() const;
前面不用加const了,否则会有报警:
1 | class Base |
getM
就是常量成员函数,如果给setM加const,那么就会报错,因为它修改m的值。定义的常对象b只能调用getM
,调setM会报错。
问题
1 | template <typename T> |
代码会报错: error: passing ‘const xxx’ as ‘this’ argument discards qualifiers
在一个加了const
限定符的成员函数中,调用了非const成员函数,报错的意思就是缺少限定符。
factory
作为const引用,调用了非const函数 BehaviorTreeFactory::registerBuilder
,所以报错