Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译没有实现纯虚函数的派生类不会给出任何错误_C++ - Fatal编程技术网

C++ 编译没有实现纯虚函数的派生类不会给出任何错误

C++ 编译没有实现纯虚函数的派生类不会给出任何错误,c++,C++,我读到纯虚拟函数是虚拟函数,其实现必须由派生类提供,我想对其进行测试。我从一个抽象类派生了一个类,这个抽象类有一个纯虚成员函数。出于教育目的,我没有在派生类中实现这个函数,只是为了看看它是否中断。令我惊讶的是,代码编译时没有出现任何问题 我想请您帮助我理解为什么我的代码在编译时没有在派生类中实现纯虚函数。 我很乐意接受任何有助于我理解这一点的暗示 ├── AbstractClass.cpp ├── AbstractClass.h ├── cmake-build-debug ├── CMakeLi

我读到纯虚拟函数是虚拟函数,其实现必须由派生类提供,我想对其进行测试。我从一个抽象类派生了一个类,这个抽象类有一个纯虚成员函数。出于教育目的,我没有在派生类中实现这个函数,只是为了看看它是否中断。令我惊讶的是,代码编译时没有出现任何问题

我想请您帮助我理解为什么我的代码在编译时没有在派生类中实现纯虚函数。 我很乐意接受任何有助于我理解这一点的暗示

├── AbstractClass.cpp
├── AbstractClass.h
├── cmake-build-debug
├── CMakeLists.txt
├── DerivedClass.cpp
├── DerivedClass.h
└── main.cpp
main.cpp

#include <iostream>
#include "DerivedClass.h"

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
AbstractCLass.cpp

#include "AbstractClass.h"
派生类

#ifndef TUTORIAL_CLASSES_DERIVEDCLASS_H
#define TUTORIAL_CLASSES_DERIVEDCLASS_H

#include "AbstractClass.h"

    class DerivedClass : public AbstractClass{
    public:
        DerivedClass() {};
    };


    #endif //TUTORIAL_CLASSES_DERIVEDCLASS_H
DerivedClass.cpp

#include "DerivedClass.h"

X555LJ:~/CLionProjects/tutorial_classes/cmake-build-debug$ make
[100%] Built target tutorial_classes
参考文献:

抽象类是定义或继承至少一个最终重写器为纯虚拟的函数的类

您尚未尝试创建它的实例以使其按预期工作-DerivedClass也是抽象的。

来自cppreference:

抽象类是定义或继承至少一个最终重写器为纯虚拟的函数的类


您还没有尝试创建它的实例以使其按预期工作-DerivedClass也是抽象的。

派生类也可以是抽象的(不仅顶级类可以)。如果您试图创建派生(但仍然是抽象)类的实例,您应该会得到一个错误。谢谢!在我看来,这是非常不明智的。派生类也可以是抽象的(不仅仅是顶级类可以)。如果您试图创建派生(但仍然是抽象)类的实例,您应该会得到一个错误。谢谢!从我这方面来说,这是非常不明智的。
#include "DerivedClass.h"

X555LJ:~/CLionProjects/tutorial_classes/cmake-build-debug$ make
[100%] Built target tutorial_classes