小编Har*_*h H的帖子

C++析构函数问题

关于下面的示例代码,为什么基类的析构函数被调用两次?

class Base {
public:
    Base() {
        std::cout << "Base::Base()" << std::endl;
    }

    ~Base() {
        std::cout << "Base::~Base()" << std::endl;
    }
};

class Derived : public Base {
public:
    Derived() {
        std::cout << "Derived::Derived()" << std::endl;
    }

    ~Derived() {
        std::cout << "Derived::~Derived()" << std::endl;
    }
};

int main() {
    Base a = Derived();
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

以下是程序运行时输出的示例:

Base::Base()
Derived::Derived()
Derived::~Derived()
Base::~Base()
Base::~Base()
Run Code Online (Sandbox Code Playgroud)

c++ destructor

4
推荐指数
2
解决办法
518
查看次数

标签 统计

c++ ×1

destructor ×1