回 帖 发 新 帖 刷新版面

主题:析构函数中变量中内容无法显示

#include <iostream>
using namespace std;
class student
 { public:
      student(string name="liuyi")
            {  int i=0;
               cout<<"(1)输入姓名   (2)跳过______: ";
               cin>>i; 
               if(i==1)
                 cin>>name;
               cout<<"my name is "<<name<<"!"<<endl;
             }
      ~student()
            {   //cin>>name;
                cout<<name<<" is me lover!"<<endl;
             }
   private:
      string name;
  };
  int main()
  {
    {student stud1;
     }
    
    system("pause");
    return 0;
  }
  
 在构造函数中
 student(string ="liuyi") 这样为什么不行?
在析构中,为什么name不能显示?

回复列表 (共5个回复)

沙发

不太明白你问什么!
我也能在析构函数中输入数据显示数据啊!

可能是问这个?
析构函数不能有参数,尽管有多个构造函数!

板凳


[code=c]
student(string en_name="liuyi") //mark

    int i=0;
    cout<<" (1)输入姓名   (2)跳过______: ";
    cin>>i; 
    name = en_name;   //mark
    if(i==1)
        cin>>name;

    cout<<"my name is "<<name<<"!"<<endl;
}
[/code]

3 楼


析构函数中不能使用变量?
在之前的构造函数中定义了变量NAME的,
但在析构中,不使用cin 却无法显示name的内容!这是为什么?

4 楼

析构的时候你的数据已经被销毁了,怎么能拿来用呢

5 楼

[quote]
析构函数中不能使用变量?
在之前的构造函数中定义了变量NAME的,
但在析构中,不使用cin 却无法显示name的内容!这是为什么?[/quote]
仔细看看2楼的回答

1、变量有效性问题
2、string 默认初始化为空

我来回复

您尚未登录,请登录后再回复。点此登录或注册