21xrx.com
2024-12-22 21:58:44 Sunday
登录
文章检索 我的文章 写文章
"C++基类删除构造函数"
2023-07-02 03:22:40 深夜i     --     --
C++语言 基类 删除构造函数 继承 对象生命周期

C++中的基类删除构造函数是指在定义一个类的基类时,通过关键字delete来禁止编译器自动生成默认构造函数。当基类中存在虚函数时,如果没有定义默认构造函数,则继承该基类的派生类必须显式地提供自己的构造函数以初始化该虚函数。

如下面的例子:


class Base

{

public:

  virtual void print() = 0;

  Base() = delete; // 删除默认构造函数

};

class Derived : public Base

{

public:

  Derived(int n) : num(n){};

  virtual void print() std::cout << "num is " << num << std::endl;

private:

  int num;

};

在这个例子中,基类Base中被定义为纯虚函数,同时也被删除了默认构造函数。派生类Derived定义了一个带有一个int类型参数的构造函数来初始化该类的num成员。

这种删除构造函数的用法可以让我们避免不必要的默认构造函数被创建,同时也可以让我们更清楚地知道每个派生类是如何初始化每个类成员的。

在实际开发中,可以使用基类删除构造函数来确保每个对象都必须显式地被初始化,从而避免意外的行为。但需要注意的是,如果一个类没有定义构造函数,则编译器仍会生成默认构造函数,删除默认构造函数只有在该类已经定义了其他构造函数时才有意义。

总之,C++中的基类删除构造函数对于保证代码逻辑和安全性非常有帮助,在实际开发中需谨慎使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复