ask:
c++项目中,能不能在a.h文件中写一个类,以及成员函数的声明,另一个a.cc文件写成员函数的实现,且b.cc文件里调用a.h类中的成员函数
answer:
是的,你可以在C++项目中使用分离的头文件(.h文件)和实现文件(.cc或.cpp文件)来定义和实现类。
- 头文件 a.h:
在头文件 a.h 中,你可以声明类的结构、成员函数的原型(声明),以及类的其他成员变量。例如:
// a.h
#ifndef A_H
#define A_H
class MyClass {
public:
MyClass(); // 构造函数的声明
void someFunction(); // 成员函数的声明
private:
int memberVariable; // 成员变量的声明
};
#endif // A_H
- 实现文件 a.cc:
在实现文件 a.cc 中,你可以定义类的成员函数。例如:
// a.cc
#include "a.h"
MyClass::MyClass() {
// 构造函数的实现
memberVariable = 0;
}
void MyClass::someFunction() {
// 成员函数的实现
// 在这里写入函数的具体实现
}
- b.cc 文件中调用 a.h 类中的成员函数:
在 b.cc 文件中,你可以包含 a.h 头文件,并调用 MyClass 类中的成员函数。例如:
// b.cc
#include "a.h"
int main() {
MyClass obj;
obj.someFunction();
// MyClass::someStaticFunction(); //不可以!
// 如果该成员函数声明为静态的static void someStaticFunction();
// 则两种访问成员函数的方式都可以
return 0;
}
通过这种方式,将类的声明和实现分开,可以提高代码的可维护性和可读性。头文件包含类的接口,而实现文件包含类的实现细节。b.cc 文件只需要包含 a.h 头文件即可使用 MyClass 类中的成员函数。编译器在编译时会将 a.cc 中的实现与 b.cc 中的调用链接在一起形成可执行文件。
ask:
.h文件中都写些什么?
answer:
.h文件中能包含:
- 类成员数据的声明,但不能赋值
- 类静态数据成员的定义和赋值,但不建议,只是个声明就好。
- 类的成员函数的声明
- 非类成员函数的声明
- 常数的定义:如:constint a=5;
- 静态函数的定义
- 类的内联函数的定义