注册 登录
编程论坛 C++教室

求助

lscmxl 发布于 2008-10-15 11:13, 495 次点击
分析一下这段程序的输出 (Autodesk)
    class B
    {
    public:
        B()
        {
            cout<<"default constructor"<<endl;
        }
        ~B()
        {
            cout<<"destructed"<<endl;
         }
        B(int i):data(i)    //B(int) works as a converter ( int -> instance of  B)
        {
            cout<<"constructed by parameter " << data <<endl;
        }
    private:
        int data;
    };
    B Play( B b)
    {
        return b ;
    }
    (1)                                         results:
    int main(int argc, char* argv[])            constructed by parameter 5
    {                                           destructed  B(5)形参析构
        B t1 = Play(5); B t2 = Play(t1);       destructed  t1形参析构
        return 0;                   destructed  t2 注意顺序!
     }                                          destructed  t1
    (2)                                         results:
    int main(int argc, char* argv[])            constructed by parameter 5
    {                                           destructed  B(5)形参析构
        B t1 = Play(5); B t2 = Play(10);       constructed by parameter 10
        return 0;                   destructed  B(10)形参析构
    }                                           destructed  t2 注意顺序!
                                                destructed  t1

上面程序究竟是怎么个走法?红色标记处是什么意思?请高手指教!
4 回复
#2
kakaqq2008-10-15 12:32
重载了构造函数
后面是初始化列表。
至于函数怎么走······
#3
braveboy20082008-10-15 12:50
重载了构造函数(具有形参的构造函数),并且初始化列表初始化数据成员。
#4
lscmxl2008-10-16 13:44
红色标记处的意思懂了。谢谢
那程序调用流程呢,谁来解答一下。
#5
newyj2008-10-16 20:32
红色标记处 更深层的含义是 可以把 预定义类型转换为类类型
也就是 类类型常量
1