摘要:
有书这么说过,C++设计的最大目的在于允许程序员定义自己的类型,并使它们用起来跟内置类型一样容易和直观。就目前看来,要实现这一点,最核心的莫过于操作符的重载。科学的重载可以让类的使用最大程度地接近内置类型。本文将讨论类操作符重载涉及到的一些原则和具体做法。 阅读全文
摘要:
经过前两篇随笔( 上 中 )的分析我们已经解决了具有指针成员的同类对象“ 干涉 ”问题。可惜,前面给出的解决方案代码还是不完整。还有什么问题呢?观察发现,构造函数里面有new的关键字出现,也就是说开辟了新的内存空间,我们也知道new必须也只能对应一个delete,而不应该让系统自己处理( 还不熟练new和delete用法的点这里 ),但这里和new对应的delete去哪里了? 阅读全文
摘要:
先思考一下上一篇随笔前言中提出的问题。请问:仅仅自定义了复制函数就可以避免带有指针成员的同类对象相互干扰吗?很遗憾,还不够。请思考以下情形( A中依然带有指针成员 ):A a1; A a2; a1 = a2; 在最后一句执行时,复制函数并不会启用( 这种情况启用的是默认的赋值运算符 ),因此上篇随笔提到的问题( 对象相互干扰 )依然会发生。为此,我们还得再重载赋值运算符,才能彻底避免这种冲突干扰现象。 阅读全文
摘要:
若要将a对象复制给b对象,编译器应当做何工作?C++初学者也许会直接说” a对象的成员复制给b对象的成员 “。在很多情况下,这种说法正确,事实上C++会给类定义一个默认的复制函数,它所做的工作也正是如此。但,下面问题来了:如果类的成员当中有指针,这种做法还行吗?本文将对这个问题作出实例分析。 阅读全文