template<typename T>
void swap(T& a,T& b)
{
T temp(a);
a = b;
b = temp;
}
涉及到指针的时候:
两个类指针会共享一个空间,如果中间销毁了其中的一个指针所指向的内存对象,则另一个对象的指针会变成野指针,触发错误。
解决方案:
myclass& operator=(const myclass& mc)
{
val = mc.val;
letter = new char[strlen(mc.letter)+1];
strcpy(letter,mc.letter);
return *this;
}
swap对两个指针的操作
Node*p1=new Node();
p1->num=1;
Node*p2=new Node();
p2->num=2;
p1->l=p2;
p2=p1->l;
swap(p1,p2);
相当于交换了两个指针的地址。p1访问的都是p2的内容还有指针地址。