复习一下数据结构,用链表实现了一个堆栈模板类。写的过程中用到一些知识点,碰到一些问题,随手记下来。1:mystack<int> s; mystack<int> s2 = s;编译器会把s2 = s编译成拷贝构造函数s2(s),此时调用的是拷贝构造函数,而不是赋值函数(切记)。另外有时候编译器这种自做聪明,自动调用符合参数类型的构造函数会带来很难发现的错误,为了防止编译器这么做,可以在构造函数声明前加explicit关键字。
2:不改变成员变量值的函数,例如empty(),要声明为const,这点很重要,不然当一个const mystack&类型的对象调用empty()的时候,会编不过。
3:拷贝构造函数最好要先判断是否是拷贝自身,不然有时候就出错。
4:拷贝构造函数也别忘了成员变量初始化列表。