首页 > 代码库 > 在构造函数中使用new时的注意事项
在构造函数中使用new时的注意事项
果然,光看书是没用的,一编程序,很多问题就出现了--注意事项:1、 如果构造函数中适用了new初始化指针成员,则构析函数中必须要用delete2、 new与delete必须兼容,new对应delete,new[]对应delete[]3、如果有多个构造函数,则必须以相同的方式使用new,要么都是new,要么都是new[],因为构析函数只能有一个4、 应该定义一个复制构造函数,通过深度复制,将一个对象初始化为另一个对象5、 应该定义一个赋值运算符,通过深度复制,将一个对象复制给另一个对象#include<iostream>#include<cstring>#include<fstream>using namespace std;class String{private: char *str; int len; static int num_string;public: String(); String(const char *s); String(const String &s); ~String(); friend ostream& operator<<(ostream &os,String s); String operator=(const String &s) { if(this==&s) return *this; len=s.len; delete [] str; str=new char[len+1]; strcpy(str,s.str); return *this; }};int String::num_string=0;String::String(){ len=4; str=new char[len+1]; strcpy(str,"C++"); num_string++;}String::String(const char *s){ len=strlen(s); str=new char[len+1]; strcpy(str,s); num_string++;}String::String(const String &s){ len=s.len; num_string++; str=new char[len+1]; strcpy(str,s.str);}String::~String(){ num_string--; delete [] str; printf("--- %d\n",num_string);}ostream& operator<<(ostream &os,String s){ os<<s.str; return os;}int main(){ String p("wwwww"); String p1("qqqqqq"); String p2; p2=p1; cout<<p<<endl<<p1<<endl<<p2<<endl; return 0;}
在构造函数中使用new时的注意事项
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。