Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.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++中创建还是不可能? 2个类->第2个类继承第一个类,然后是在创建对象的类中运行的构造函数。_C++ - Fatal编程技术网

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