我發現這個代碼在一個C++測試:C++缺少一些輸出結果
#include <iostream>
class A
{
public:
A(int n = 2) : m_i(n) { }
~A() { std::cout << m_i; }
protected:
int m_i;
};
class B
: public A
{
public:
B(int n) : m_x(m_i + 1) , m_a(n) { }
public:
~B()
{
std::cout << m_i;
--m_i;
}
private:
A m_x;
A m_a;
};
int main()
{
{ B b(5); }
std::cout << std::endl;
system("PAUSE");
return 0;
}
答案是:2531但是我的理解,這裏只是叫了兩個析構函數: 先爲B,從而進入2; A輸入1秒爲 秒; 我們如何得到數字5和3?感謝任何幫助。
你使用調試器? – 2013-05-13 13:37:42