第十周 字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示
2015-05-15 09:28
661 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示。请将类声明中的string全部改为char *后,重新写一遍程序(此时的区别是,类中有指针成员,构造和析构函数需要考虑深复制的问题了。)</span>
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
class CPerson
{
protected:
char *m_szName;
char *m_szId;
int m_nSex;//0:women,1:man
int m_nAge;
public:
CPerson(char *name,char *id,int sex,int age);
void Show1();
~CPerson();
};
class CEmployee:public CPerson
{
private:
char *m_szDepartment;
float m_Salary;
public:
CEmployee(char *name,char *id,int sex,int age,char *department,floatsalary);
void Show2();
~CEmployee();
};
int main()
{
char name[10],id[19],department[10];
int sex,age;
float salary;
cout<<"input employee'sname,id,sex(0:women,1:man),age,department,salary:\n";
cin>>name>>id>>sex>>age>>department>>salary;
CEmployee employee1(name,id,sex,age,department,salary);
employee1.Show2();
return 0;
}
[参考解答]
#include<iostream> #include<string.h> using namespace std; class CPerson { protected: char* m_szName; char* m_szId; int m_nSex;//0:women,1:man int m_nAge; public: CPerson(char* name,char* id,int sex,int age); void Show1(); ~CPerson(); }; class CEmployee:public CPerson { private: char* m_szDepartment; double m_Salary; public: CEmployee(char* name,char* id,int sex,int age,char* department,double salary); void Show2(); ~CEmployee(); }; void CEmployee::Show2() { Show1(); cout<<"Department:"<<m_szDepartment<<endl<<"Salary:"<<m_Salary<<endl; } CEmployee::~CEmployee() { delete[]m_szDepartment; } CEmployee::CEmployee(char* name,char* id,int sex,int age,char* department,double salary):CPerson(name,id,sex,age) { m_szDepartment=new char[strlen(department)]; strcpy(m_szDepartment,department); m_Salary=salary; } void CPerson::Show1() { cout<<"Name:"<<m_szName<<endl<<"ID:"<<m_szId<<endl <<"Sex:"<<m_nSex<<endl<<"Age:"<<m_nAge<<endl; } CPerson::~CPerson() { delete[]m_szId; delete[]m_szName; } CPerson::CPerson(char* name,char* id,int sex,int age) { m_szName=new char[strlen(name)]; m_szId=new char[strlen(id)]; strcpy(m_szName,name); strcpy(m_szId,id); m_nSex=sex; m_nAge=age; } int main() { char name[10],id[19],department[10]; int sex,age; double salary; cout<<"input employee's name,id,sex(0:women,1:man),age,department,salary:\n"; cin>>name>>id>>sex>>age>>department>>salary; CEmployee employee1(name,id,sex,age,department,salary); employee1.Show2(); return 0; }测试结果如下:
相关文章推荐
- c/c++生成不重复的字符串(6个字符组成,可表示的个数可以扩充),简易版数据库主键
- 网络通信中,DELPHI的string类型数据转换为C++字符串发送的一个陷阱
- C++的中英文字符串表示(string,wstring),使用wcout.imbue(std::locale("chs"));本地化解析编码
- c++将string类型字符串转换成char *
- C语言字符串的常见特殊操作(除了string.c实现的那些接口)
- c++中怎么判断一个string类型的字符串变量是否为数字?
- char * 与 string 类型相互转换方法--Linux C/C++
- C++字符串string类型
- C++的中英文字符串表示(string,wstring)
- C++ 字符串string类型最常用操作总结
- C++ leveldb Slice的数据类型 不一定 必须是字符串。也可以是二进制
- stringstream流格式化符,把int转化为string,string又可以转为C语言风格的字符串
- 《C++标准函数库》中说的有三个函数可以将字符串的内容转换为字符数组和C—string (CString、char*、String三种类型互换)
- C++ 输入字符串和string 类型总结
- string变量字符串的结束标志是什么,我看书上好像和c不一样,c的char *是以"\0"结束但c++好像不是
- C风格字符串和C++的标准库类型string的比较
- 在C++中有两种类型可以用于表示字符,char和wchar_t。
- C++中 替换string类型字符串中汉字的问题
- C++的中英文字符串表示(string,wstring)
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题