拷贝构造函数相关问题,求高手解答!
已知程序使用类提供默认拷贝构造函数存在隐患:
类声明如下:
#ifndef UNIT1_H_#define UNIT1_H_#include <iostream>#include <string>using namespace std;class StringBad{private: char *str; int len; static int num_string;public: StringBad(); StringBad(const char *s); ~StringBad(); friend ostream & operator <<(ostream &os, const StringBad &t);};#endif#include "unit1.h"void callme1(StringBad &t);void callme2(StringBad t);int main(){ StringBad headline1("a"); StringBad headline2("b"); cout << "headline1: " << headline1 << endl; cout << "headline2: " << headline2 << endl; StringBad dl = headline1;//调用拷贝构造函数是否生成临时对象?程序执行结束后调用析构函数释放dl callme2(headline1);//调用拷贝构造函数生成临时对象并在函数执行结束后析构临时对象; return 0;}void callme1(StringBad &t){ cout << "referenece: " << endl; cout << t << endl;}void callme2(StringBad t){ cout << "value: " << endl; cout << t << endl;}