您的位置:首页 > 其它

运算符重载4(有指针成员指向动态内存时)

2016-02-23 21:51 239 查看
#include<iostream>

using namespace std;

//有指针成员指向动态内存时 自己写拷贝构造函数 自己写“=”运算符 自己写析构函数

class Stack{
typedef unsigned int uint;
string* mem;
uint max;
uint len;

public:
Stack(uint n):mem(new string
),max(n),len(0){}
Stack(const Stack& s):mem(new string[s.max]),max(s.max),len(s.len){}
uint max_size()const{return max;}
uint size()const{return len;}
Stack& push(const string & e){if(len>=max)throw 0;mem[len++]= e;return *this;}
string pop(){if(len == 0)throw 1;return mem[--len];}
void print()const{for(int i = 0;i<len;i++)cout<<mem[i];cout<<endl;}
~Stack(){delete[] mem;}
Stack& operator=(const Stack& rh)
{
delete[] mem;
mem = new string[rh.max];
len = rh.len;
max = rh.max;
for(uint i = 0;i<len;i++)
mem[i] = rh.mem[i];
return *this;
}

};

int main()

{
Stack s1(5);
Stack s2(s1);
Stack s3(8);
s1.push("1");
s1.push("2").push("3").push("4");
s2.push("hehe").push("hah");
s3 = s2;//s3.operator = (s2)
s1.print();
s2.print();
s3.print();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: