此代码适用于第一个实例,但对于第二个实例,它不起作用 输入: poorva 17 26 拉朱 18 28 对于第二个对象,即raju,它没有采取名称和滚动否,并显示一些垃圾值这里是ideone链接https://ideone.com/uxwMAc
#include<bits/stdc++.h>
using namespace std;
class student
{
int roll;
int age;
char name[20];
public:
void getData();
void showData();
};
void student::getData()
{
char n[20];
int a,r;
cout<<"enter name of student \n";
gets(name);
cout<<"enter age of student \n";
cin>>age;
cout<<"enter roll no of student \n";
cin>>roll;
}
void student::showData()
{
cout<<"details are \n\n";
cout<<"name is :";
puts(name);
cout<<"age is "<<age<<endl;
cout<<"roll number is "<<roll<<endl;
}
int main()
{
student poorva ;
student raju ;
//for poorva
poorva.getData();
poorva.showData();
//for raju
raju.getData();
raju.showData();
return 0;
}
答案 0 :(得分:1)
puts
和gets
是来自<cstdio>
的C派生函数。 cin
和cout
是来自<iostream>
的C ++流。不要混合它们,当它们在没有协调的情况下读取(或写入)相同的基础流时,它们之间的交互性很差。
请尝试使用cin.getline
,然后完全删除puts
。理想情况下,也可以用std::string
替换固定字符数组。
哦,不要#include<bits/stdc++.h>
。这是一个实现细节。无论你何时认为直接使用它是合理的,学习C ++是一个不好的地方,你应该停止使用它(也许在这里命名并羞辱它)。
您的代码应该以
开头#include <iostream>
代替。
答案 1 :(得分:-3)
以下
Student raju =new Student () ;
虽然这应该有效。 与pooja相同