郑州网站建设公司 排行,桂林市工程建设项目招标网站,自己做app建网站,怎样用html制作网站5. 赋值操作符 并不是程序清单12.3的所有问题都可以归咎于默认的复制构造函数,还需要看一看默认的赋值操作符。 ANSI C 允许结构赋值,而C允许类对象赋值,这是通过自动为类重载赋值操作符实现的。这种操作符 的原型如下: Class name Class_name :: operator (const Class_…5. 赋值操作符 并不是程序清单12.3的所有问题都可以归咎于默认的复制构造函数,还需要看一看默认的赋值操作符。 ANSI C 允许结构赋值,而C允许类对象赋值,这是通过自动为类重载赋值操作符实现的。这种操作符 的原型如下: Class name Class_name :: operator (const Class_name ) ; 它接受并返回一个指向类对象的引用。例如,StringBad类的赋值操作符的原型如下: StringBad StringBad :: operator (const StringBad ) ; (1)何时使用赋值操作符 将已有的对象赋给另一个对象时,将使用重载的赋值操作符:
388
CPrimer Plus(第五版)中文版
StringBad headlinel (Celery Stalks at Midnight) ;
StringBad knot: knot headlinel; // assignment operator invoked 初始化对象时,并不一定会使用赋值操作符: StringBad metoo knot: // use copy constructor, possibly assignment, too 这里,metoo是一个新创建的对象,被初始化为knot的值,因此使用复制构造函数。不过,正如前面 指出的,实现时也可能分两步来处理这条语句:使用复制构造函数创建一个临时对象,然后通过赋值将临 时对象的值复制到新对象中。这就是说,初始化总是会调用复制构造函数,而使用操作符时也可能调用 赋值操作符。 (2)赋值操作符的功能 与复制构造函数相似,赋值操作符的隐式实现也对成员进行逐个复制。如果成员本身就是类对象,则 程序将使用为这个类定义的赋值操作符来复制该成员,但静态数据成员不受影响。