C++头文件声明的const成员函数如何在.cpp文件中正确实现
C++ const成员函数实现编译报错解决方案
报错原因
- C++ 中成员函数的
const修饰符属于函数签名的一部分,声明和实现的签名必须完全一致才能匹配 - 你头文件中声明的
speak()、move()是const成员函数,但.cpp文件实现时没有加const,编译器会判定这是两个不同的非const成员函数,自然找不到对应的声明,就会抛出匹配失败的错误。
修复方法
在.cpp文件的两个成员函数实现末尾,同步加上const修饰符即可,保证和头文件声明完全一致。
修正后完整代码示例
#include <iostream> #include <string> #include "Animal.h" Animal::Animal(): _name("unknown") { cout << "constructing Animal object" << endl; }; Animal::~Animal() { cout << "destructing Animal object" << endl; } // 新增const修饰符,和头文件声明匹配 void Animal::speak() const { cout << "Animal speaks" << endl; } // 新增const修饰符,和头文件声明匹配 void Animal::move() const {};
注意事项
const成员函数内部不允许修改类的普通成员变量,也不允许调用其他非const成员函数,该约束用来保证函数不会修改类实例的状态。
内容的提问来源于stack exchange,提问作者Ymi
相关产品推荐
相关产品推荐

