使用从派生类构造函数传递参数到基类构造函数

时间:2016-07-05 18:04:59

标签: c++

了解在派生类的构造函数中调用基类的构造函数是否很重要?

我的意思是,这样做有什么实际应用吗?如果是,有人可以给我一个例子,并解释何时应用它,何时不应用?

我刚刚了解了它,我不知道它是否在实际应用中使用。

以下是一个例子:

class base {
     int a;
     int b;
public:
     base(int i, int j) {
         a=i;
         b=j;
     }     
};

class derived : public base {
public:
     derived(int p, float q) : base(p, q)   //passing parameters to base class
     {  }
     };

1 个答案:

答案 0 :(得分:0)

  

我的意思是,这样做有什么实际应用吗?

是。用例数量太多,无法在此列出。

  

如果是,有人可以向我提供一个例子,并解释何时应用它,何时不是?

以下是几个应用它的示例。

示例1:

struct Rectangle
{
   Rectangle(int w, int h) : width(w), height(h) {}
   int width;
   int height;
};

struct Square : Rectangle
{
   Square(int size) : Rectangle(size, size) {}
};

示例2:

struct Employee
{
   Employee(std::string const& name, int id) : name(name), id(id) {}
   std::string name;
   int id;
};

struct Manager : struct Employee
{
   Manager(std::string const& name, int id) : Emplyee(name, id) {}
   void addEmployee(int id)
   {
       managedEmployeeIDs.insert(id);
   }

   std::set<int> managedEmployeeIDs;
};

很难说出它不合适的地方,因为它有很多不合适的方式。在给出一个例子时,更容易判断它是否合适。