zoukankan      html  css  js  c++  java
  • C++:构造函数和析构函数能否为虚函数

    C++:构造函数和析构函数能否为虚函数?

    简单回答是:构造函数不能为虚函数,而析构函数可以且常常是虚函数。

    (1) 构造函数不能为虚函数

           编译器会为每个含有虚函数的类创建一个虚函数表,在创建对象时会创建一个虚函数表指针指向虚函数表。如果构造函数是虚函数,则需要用对象来调用构造函数,构造函数之前对象还不存在,因此构造函数不能为虚函数。

    (2)析构函数可以是虚函数

          当基类对象的指针指向派生类对象,若析构函数不为虚函数,delete基类对象的时候,只会调用基类的析构函数,不会调用派生类的析构函数,这样会造成内存泄漏。(若果析构函数是虚函数,则会先调用派生类的析构函数然后在调用基类的析构函数。)

  • 相关阅读:
    学习进度条54
    学习进度条53
    学习进度条52
    学习进度条51
    学习进度条50
    学习进度条49
    学习进度条48
    学习进度条47
    学习进度条45
    线程池中的阻塞队列选择
  • 原文地址:https://www.cnblogs.com/dingou/p/10281154.html
Copyright © 2011-2022 走看看