程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> new-關於虛析構函數的問題

new-關於虛析構函數的問題

編輯:編程綜合問答
關於虛析構函數的問題

#include
using namespace std;
class A
{
public:

A(){cout << "A" << endl;}
virtual ~A(){cout << "~A" << endl;}
};
class B : public A
{
public:
B(){cout << "B" << endl;}
~B(){cout << "~B" << endl;}
};
int main()
{
A *p = new B;
delete p;
system("pause");
return 0;
}

A *p = new B;這句為什麼不new A呢?
這樣寫有沒有什麼現實需要?
有什麼情況會必須這樣寫嘛?

最佳回答:


也可以寫 A *p = new A,這樣語法上是沒有錯的。直接 new A 是不會執行 B 的構造函數。

只是代碼上來講,
(1)new B 會執行 B 和 A 的構造函數,類的繼承
(2)這應該是講類的多態,p 可以指定 A 的對象,也可以指向 B 的對象。原因是 B 是 A 的子類!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved