19.1.2赋值运算符“=”的重载 对任一类X,如果没有用户自定义的赋值运算符函数,那么系 统自动地为其生成一个缺省的赋值运算符函数,定义为类X 中的成员到成员的赋值,例如: X&X: operator=(const X& source ∥.)成员间赋值 若obj和ob2是类X的两个对象,obj2已被创建,则编译程 序遇到如下语句: objl=obj2 就调用缺省的赋值运算符函数将对象0b2的数据成员的 值逐个赋给对象ob]1的对应数据成员中
19.1.2 赋值运算符“=”的重载 对任一类X,如果没有用户自定义的赋值运算符函数,那么系 统自动地为其生成一个缺省的赋值运算符函数,定义为类X 中的成员到成员的赋值,例如: X &X::operator=(const X& source) { //…成员间赋值 } 若obj1和obj2是类X的两个对象,obj2已被创建,则编译程 序遇到如下语句: obj1=obj2; 就调用缺省的赋值运算符函数,将对象obj2的数据成员的 值逐个赋给对象obj1的对应数据成员中
1指针悬挂问题 在某些特殊情况下,如类中有指针类型时,使用缺省 的赋值运算符函数会产生错误。 例192使用缺省的赋值运算符函数产生错误的例子。 #include <iostream.h> #include<string.h> class string i public: string char *s) ptr=new char[strlen(s)+1; strcpy(ptr; s);
1.指针悬挂问题 在某些特殊情况下,如类中有指针类型时,使用缺省 的赋值运算符函数会产生错误。 例19.2 使用缺省的赋值运算符函数产生错误的例子。 #include <iostream.h> #include<string.h> class string { public: string(char *s) { ptr=new char[strlen(s)+1]; strcpy(ptr,s); }