具有两个不同类的两个不同构造函数

Two different constructors that have two different classes

本文关键字:两个 构造函数 同类      更新时间:2023-10-16

是否可以在一个文件中有两个不同的构造函数,因为我有两个不一样的类。

示例:

在animal.h文件中

class Animal
{
  .... 
}
class Pet: public Animal 
{
  ... 
}

在我的animal.cpp中:

 Animal::Animal()
 {
 }
 Pet::Pet()
 {
 }

从技术上讲:是的,这是可能的。*.cpp*.h*.hpp文件的常见文件结构只是一个约定。该语言不会阻止您为同一源文件中的两个不同类定义构造函数或其他成员函数。

动物.h:

#ifndef ANIMAL_H
#define ANIMAL_H
class Animal
{
public:
    Animal();
};
#endif

pet.h:

#ifndef PET_H
#define PET_H
#include "animal.h"
class Pet : public Animal
{
public:
    Pet();
};
#endif

动物.cpp:

#include "pet.h"
Pet::Pet() {}
Animal::Animal() {}

是否应该这样做完全是另一回事。通常,这会使您的项目结构更难理解,也更难维护。上面给出的例子是一个特别糟糕的情况,任何有能力的C++程序员都想重构它。