我是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/

10-11 20:17