如下为类型CMyString的声明, 请为该类型添加赋值运算符函数.
1 2 3 4 5 6 7 8 9 10
| class CMyString { public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(void); private: char* m_pData; }
|
1. override clone() 方法
由于Java里面不支持运算符重载, 所以只能用实现clone()方法来模拟=运算符重载.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import java.util.Arrays;
public class CMyString implements Cloneable { private char[] m_pData;
public CMyString(char[] pData) { m_pData = pData; } public CMyString(){ this(null); } @Override protected void finalize() throws Throwable{ super.finalize(); } @Override public CMyString clone() throws CloneNotSupportedException { CMyString another = (CMyString) super.clone(); another.m_pData = (this.m_pData == null) ? null : this.m_pData.clone(); return another; } @Override public String toString(){ if(m_pData == null){ return null; } return new String(m_pData); }
public void changeArray(){ Arrays.fill(m_pData, '?'); } public static void main(String[] args) throws CloneNotSupportedException { CMyString string = new CMyString(new char[]{'h','e','l','l','o'}); CMyString other = string.clone(); string.changeArray(); System.out.println(string); System.out.println(other); CMyString string1 = new CMyString(null); CMyString other1 = string1.clone(); string.changeArray(); System.out.println(string1); System.out.println(other1); } }
|