摘要:
哈哈, 看出说明问题了吧,最后剩下的对象个数居然是-1.
原因在于headline2 按值传递的时候导致了析构函数被调用
StringBad 类的问题是由自动定义的隐式成员函数引起的,这种函数的行为与类的设计不相符。具体来说,C++自动提供了下面这些成员函数:
· 默认构造函数,如果没有定义构。
· 复制构造函数,如果没有定义。
· 赋值操作函数,如果没有定义。
· 默认析构函数,如果没有定义。
· 地址操作符,如果没有定义。
通常在没有自己定义的情况下,编译器将自动生成上述的最后4中函数的定义。
从上面的结果表明编译器是自动生成了隐式复制构造函数和隐式赋值操作符引起的,下面就这几种隐式成员函数进一步讨论:
一、默认构造函数
如果没有提供任何构造函数,C++将默认创建一个不带任何参数的构造函数。
例如定义了一个Test的类 阅读全文