数。
回收指针所引用的内存
赋值操作符
实现赋值操作符重载的时候必须注意:
确保对象没有自我赋值
复用被赋值对象(目的对象)的资源或者销毁它
从元对象中将带赋值内容赋值到目的对象
最后,返回目的对象的引用
类的接口
当类的用户查看类的时候,最关心的是类中的声明内容。通过观察类的共有成员函数,客户可获知对类对象进行的绝大多数操作。因此一个好的类,必须对类的接口有着良好的设计和注释。
类通常被用户用来创建对象或者通过继承创建其他类,而成员函数则被这些对象调用,我们要为类和成员函数提供有意义的名称。
此外,我们还应该为成员函数的参数使用合适的名称。这样用户可以清楚地知道某个参数的用途。
而在大多数情况下,仅通过查看函数、参数名称,无法清楚地了解类及其成员函数的用途,必须提供详尽的文档,其内容包括:
类的用途 预定用户 所依赖的类 类的限制是什么
参数的传递模式
每种成员函数都应该清楚地指明参数的传递模式,参数可以按照值传递、引用传递、指针传。与const联合使用,参数会更加的安全可靠。
每个参数的传递模式都给客户传达特定的含义,此外,有时还需准许你一些经长时间验证的有效规则。为参数选择合适的类型非常重要。
下面几个例子说明参数不同的传递模式设置:
注:主调函数指的是g()函数(或者main()函数),它调用另外一个函数f(),此时,f()是被调函数。
若有两个类T、X 以及X类的成员函数f()
(1)void X::f(T arg)
(2)void X::f(const T arg)
(3)void X::f(T& arg)
(4)void X::f(const T& arg)
(5)void X::f(T* argp)
(6)void X::f(const T*arg)
(7)void X::f(T* const argp)
(8)void X::f(const T* const argp)
为参数选择正确的模式:
函数的返回值