我是C++的新手,所以我在Xcode中测试了一些东西,发现了一个很奇怪的东西。
这是我的“Testing.h”文件
#ifndef Testing_h
#define Testing_h
class Testing{
private:
int a;
public:
Testing(int a=3);
void hey(int b);
};
#endif
这是我的“Testing.cpp”文件
#include "Testing.h"
Testing::Testing(int a){
a = 4;
}
最后,这是'main.cpp'文件
#include <iostream>
#include "Testing.h"
using namespace std;
int main(){
Testing a;
//Apparently not completing the definitions of every abstract methods in the class is not a problem
}
我仅在“Testing.h”中声明了“void hey(int b)”,但未在“Testing.cpp”中定义它。因此,我想知道编译器如何在没有足够的“void hey(int b)”信息的情况下成功编译“main.cpp”。提前致谢!
最佳答案
因为您永远不需要hey()
的定义。
您可以通过调用来定义,例如:
a.hey(42);
而且您会看到链接器不太满意,因为
hey
是 undefined reference 。关于c++ - 我怎么可能从尚未定义某些成员方法的类中创建一个实例? (C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48769734/