【发布时间】:2017-08-16 13:44:50
【问题描述】:
我知道如果我有一个抽象类,那么我不能创建一个抽象类类型的对象。但是假设“Base”是一个基类,“Derived”是一个派生类。 在基类中,我有一个成员变量名称。
Base.h
Base(string name = "");
Base.cpp
Base(string theName){name = theName);
这不是在创建一个对象吗?
在派生类中,我有成员变量年龄。 现在在派生类默认构造函数中
Derived.h
Derived(string name = "", int theAge = 0);
Derived.cpp
Derived(string theName, int theAge):Base(theName) { age = theAge }
那不是也调用了 Base 的默认构造函数吗? 那么,我可以调用参数化构造函数但不能调用默认构造函数吗?
还有一件事,如果我在基类中有另一个函数而不是纯函数,如果不允许我为基类创建对象,我该如何调用该函数?
提前致谢!
【问题讨论】:
-
那么 Base 是一个抽象基类还是只是一个基类?我认为可编译的 minimal reproducible example 会有所帮助。
-
Base构造函数不是创建 对象,它可以初始化Base类的实例(对象)。如果你要创建一个Base对象,你只需定义一个类的变量。 -
请告诉我们是什么代码导致了您的问题以及错误消息是什么。
-
另见定义与声明。然后你可以更深入地使用抽象类与具体类。
标签: c++ class c++11 inheritance constructor