第十周 字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示
来源:互联网 发布:网络污词大全 编辑:程序博客网 时间:2024/05/01 17:06
<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++扩充的string类型外,按C语言的传统,还可以用char *表示
- C语言字符串的常见特殊操作(除了string.c实现的那些接口)
- C语言字符串string(char)的操作函数
- C语言的负数扩充
- C语言还可以这样用?
- c语言char类型的相关知识点
- C语言之字符串的表示方式
- C++语言对C语言的扩充
- c/c++生成不重复的字符串(6个字符组成,可表示的个数可以扩充),简易版数据库主键
- 关于C语言char *指向的字符串
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- C/C++—— 除了用类成员函数访问类私有成员变量外,还可以通过类对象地址来直接访问和修改类的私有成员变量
- C++对C语言的扩充之一
- 对C语言中的字符串,字符数组以及用指针表示字符串的理解
- C++string类型字符串的存储方式
- C语言字符串的指针—字符串的表示形式
- c语言中计算int,float,double,char四种数据类型所能表示的数据范围
- 的南方就开始改口费疯狂的复古风飞
- Windows下安装Python模块的方法
- 一次非常有意思的SQL优化经历
- 高通发布两款物联网旗舰WiFi芯片
- 关于AS集成ndk的问题总结
- 第十周 字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示
- 黑马程序员-----IO流
- igbinary vs serialize vs json_encode
- SPI总线协议及SPI时序图详解
- 2015-5-15笔记汇总
- iOS开发经验之多个UIImageView 加载高清大图时内存管理
- PBOC/EMV-交易流程详解--POS与卡片的数据交互进行分析
- ios学习(二) 下拉刷新特效EGOTableViewPullRefresh
- R语言中 mode(),typeof() 的区别