大家好,帮忙看看下面这个程序的输出结果,具体题目记不清了,大体是这样#include <stdio.h>
class base
{
public:
base(int i);
~base();
private:
int m_i;};
base::base(int i):m_i
{
printf("step %d",i);
}
base::~base()
{
printf("step %d",m_i);
}
base::base(5);
void main()
{
printf("step 1\n");
base a=new base(4);
delete a;
}
如果有错还希望大师们帮忙改改,谢谢了,这是昨天的一道笔试题,可是回来想了半天调不出来

解决方案 »

  1.   

    base::base(int i):m_i
    改成
    base::base(int i):m_i(i)
    base::base(5);//这句是不应该有的,要删掉.
      

  2.   


    #include <stdio.h>
    class base
    {
        public:
            base(int i);
            ~base();
        private:
            int m_i;};
    base::base(int i):m_i(i)  // m_i(i)
    {
        printf("step %d\n",i);
    }
    base::~base()
    {
        printf("step %d\n",m_i);
    }
    base base1(5);         //是否是定义全局变量?
    void main()
    {
        printf("step 1\n");
        base *a=new base(4);
        delete a;
    }
      

  3.   

    谢谢楼上的回答,我以前一直是学java的,对c++不是很熟悉,所以昨天考出来不知道如何分析程序,实在不好意思,不过问题解决了,分给大家了
      

  4.   

    // 构造函数给成员变量m_i赋值啊,
    // 和下面的一样
    base::base(int i)
    {
        m_i = i;
        printf("step %d\n",i);
    }
      

  5.   

    base::base(int i)
    {
        m_i = i;
        printf("step %d\n",i);
    }

    base::base(int i):m_i(i)  // m_i(i)
    {
        printf("step %d\n",i);
    }
    区别还是有的~~推荐用下面的·效果问题