C++;创建两个类,其中第二个类继承第一个类,构造函数在创建对象的类中运行 这是可能的,在C++中创建还是不可能? 2个类->第2个类继承第一个类,然后是在创建对象的类中运行的构造函数。
如果我正确理解您的注释,您需要有两个类。一个类派生自基类。但派生类构造函数应该调用一个方法,该方法只是派生类的一部分,但在创建基类的实例时不应该调用该方法 下面是一个简单的例子: 类C++;创建两个类,其中第二个类继承第一个类,构造函数在创建对象的类中运行 这是可能的,在C++中创建还是不可能? 2个类->第2个类继承第一个类,然后是在创建对象的类中运行的构造函数。,c++,C++,如果我正确理解您的注释,您需要有两个类。一个类派生自基类。但派生类构造函数应该调用一个方法,该方法只是派生类的一部分,但在创建基类的实例时不应该调用该方法 下面是一个简单的例子: 类 class Base{ public: Base(); virtual ~Base(); }; class Derived : public Base{ public: Derived(); virtual ~Derived(); void task(); }; 类.cpp #includ
class Base{
public:
Base();
virtual ~Base();
};
class Derived : public Base{
public:
Derived();
virtual ~Derived();
void task();
};
类.cpp
#include "classes.h"
#include <iostream>
Base::Base(){
std::cout << "Base" << std::endl;
}
Base::~Base(){
}
Derived::Derived(){
std::cout << "Derived" << std::endl;
task();
}
Derived::~Derived(){
}
void Derived::task(){
std::cout << "task" << std::endl;
}
输出:
[me@my_machine]$ ./derived
Base
Base
Derived
task
我很难理解你的问题。我想您是在问是否可以从派生类调用基类的构造函数。这是正确的吗?请您提供一些伪代码,或者对您的问题进行更详细的描述。不清楚你的意思嘿,这是大学运动,对我来说也不清楚。提供给我们的唯一信息是:创建两个类,其中一个继承第一个类。实现对构造函数的调用,该调用仅在创建对象的类中执行。该练习文本非常糟糕。“两个类,其中一个继承了第一个”是笨拙的措辞,“只在…中执行”是奇怪的冗余,最后一句缺少一个词(“在中被创建”),总体上没有任何意义(调用不是“在类中执行”,甚至是“正在创建对象的类”)。我建议要求澄清。目前,这个问题还不清楚,也没有用。你想使用虚拟析构函数有什么原因吗?@FalcoGer作为多态性使用的安全措施?@MaxLanghof你能详细说明一下吗?编辑:nvm,我发现:@FalcoGer如果您想以多态方式使用类层次结构,您可能需要多态删除(即
删除myPointerToBase;
应该调用动态类型的析构函数,而不是静态类型的析构函数)。一个虚拟析构函数可以保证Max Langhof是正确的。这是一项安全措施。如果有一个指向派生对象的基指针,我希望在删除此对象时调用派生析构函数。
[me@my_machine]$ ./derived
Base
Base
Derived
task