由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 一个C++面试题分析
相关主题
没有经过构造函数???急问:compile and build dependency
请教一个c++ throw exception 问题find bugs of c++ codes
我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。C++设计疑问
C++的一个小疑问,求解惑几个C++书写风格疑问
one question about operator deleteC++问题
一道c++的考古题一道Microsoft的面试题
请问关于c++实现singleton的问题?求C/C++面试题
C++ 书推荐a c++ question
相关话题的讨论汇总
话题: std话题: public话题: int话题: cout话题: class
进入Programming版参与讨论
1 (共1页)
s****l
发帖数: 41
1
#include
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;
return 0;
}
为什么输出为 2531?
l*********s
发帖数: 5409
2
sequence of detor calling is the reverse of sequence of ctor calling. ctor
calling follows the order first base class, then the member variables
p*a
发帖数: 592
3
先call B的destructor,打印2,然后call m_a的,打印5,然后call m_x的,打印3,
最后call B的父亲A的dtor,打印1,因为m_i已经被--过了。

【在 s****l 的大作中提到】
: #include
: class A
: {
: public:
: A(int n = 2) : m_i(n) { }
: ~A() { std::cout << m_i; }
: protected:
: int m_i;
: };
: class B

1 (共1页)
进入Programming版参与讨论
相关主题
a c++ questionone question about operator delete
求教:c++中如何从raw data中创建对象?一道c++的考古题
问一个empty class的size的问题请问关于c++实现singleton的问题?
问个 ctor/copy ctor的问题C++ 书推荐
没有经过构造函数???急问:compile and build dependency
请教一个c++ throw exception 问题find bugs of c++ codes
我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。C++设计疑问
C++的一个小疑问,求解惑几个C++书写风格疑问
相关话题的讨论汇总
话题: std话题: public话题: int话题: cout话题: class