关于c++中字符,字符数组,指针的一个小程序的疑问???
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Person {
private:
int id;
char name[20];
char sex[10];//这里不可以写成 : char sex[];... 这样写是不对的,必须指明具体占几个字符.
char address[30];
int age;
/*
char *name;
char *sex;
char *address;
*/
public :
// virtual void Accept() =0;
//virtual void Display()=0;
/*
Person(int id,char name[20],char sex[10],char address[30]) {
this->id=id;
this->name=name;
this->sex=sex;
this->address=address;
}//这里这么写是不对的,不能使用这种构造方法,要使用这种构造方法必须得写成:char *name; char *sex; char *address;
*/
/*
Person(int id,char *name,char *sex,char *address) {
this->id=id;
this->name=name;
this->sex=sex;
this->address=address;
}
*/
virtual void Accept() {
cout<<"请输入你的身份证号:"<<endl;
cin>>id;
cout<<"id="<<id<<endl;
cout<<"请输入你的姓名:";
cin>>name;
cout<<"name="<<name<<endl;
cout<<"请输入你的性别:";
cin>>sex;
cout<<"sex="<<sex<<endl;
cout<<"请输入你的地址:";
cin>>address;
cout<<"address="<<address<<endl;
}
virtual void Display() {
cout<<"身份证号:"<<"\t"<<id<<endl;
cout<<"姓名:"<<"\t"<<name<<endl;
cout<<"性别:"<<"\t"<<sex<<endl;
cout<<"地址:"<<"\t"<<address<<endl;
cout<<" 年龄:"<<"\t"<<age<<endl;
}
int getId() {
return id;
}
void setId(int _id) {
id=_id;
}
char *getName() {
return name;
}
void setName(char _name[20]) {
name=_name;
}
/*
这里编译报错,改成void setName(char *_name) {name=_name}也不对,
改成void setName(string _name) {name=_name}更不对,
请c++高手具体指点迷津,重在讲解细节和比较容易误解的知识点,在此感激不尽!!!!
?????????????????????
*/
char *getSex() {
return sex;
}
void setSex(char _sex[10]) {
sex=_sex; //这里同上问
}
char *getAddress() {
return address;
}
void setAddress(char *_address) {
address=_address; //这里同上问
}
int getAge() {
return age;
}
void setAge(int _age) {
age=_age;
}
};