第 8 章 多态性
1. 编写程序完成如下功能:
⑴ 编写一个自己的字符串类 MyString,它有一个私有的数据成员:指向字符串的指针
m_data。编写该类的构造函数、拷贝构造函数和析构函数,在构造函数和拷贝构造函数中动
态申请内存空间赋值给 m_data。用于存储字符串。在析构函数中释放内存空间。
⑵ 重载运算符“+”作为类 MyString 的成员函数,使能完成字符串相加功能。
⑶ 编写 main 函数,测试该类及被重载的运算符。
知识点:运算符重载
解题分析:双目运算符重载为成员函数
答案:
#include<iostream>
using namespace std;
class MyString
{
public:
MyString(char S[]){a=strlen(S);m_data=new char[a+1];m_data=S;}
MyString(MyString &p){m_data=p.m_data;}
//~MyString() {delete []m_data;}
MyString operator + (MyString c2){return MyString(strcat(m_data,c2.m_data));}
void display(){cout<<m_data;}
private:
char *m_data;
int a;
};
void main()
{
char s1[20],s2[20],s[40];
cin>>s1;
cin>>s2;
MyString x(s1),y(s2),z(s);
z=x+y;
z.display();
cout<<endl;
}
2. 编写程序完成如下功能:
⑴ 编写一个自己的字符串类 MyString,它有一个私有的数据成员:指向字符串的指针
m_data。编写该类的构造函数、拷贝构造函数和析构函数,在构造函数和拷贝构造函数中动
态申请内存空间赋值给 m_data。用于存储字符串。在析构函数中释放内存空间。
⑵ 重载运算符“+”作为类 MyString 的友元函数,使能完成字符串相加功能。
⑶ 编写 main 函数,测试该类及被重载的运算符。
知识点:运算符重载