博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在构造函数中使用new时的注意事项
阅读量:6646 次
发布时间:2019-06-25

本文共 1235 字,大约阅读时间需要 4 分钟。

果然,光看书是没用的,一编程序,很多问题就出现了--注意事项:1、 如果构造函数中适用了new初始化指针成员,则构析函数中必须要用delete2、 new与delete必须兼容,new对应delete,new[]对应delete[]3、如果有多个构造函数,则必须以相同的方式使用new,要么都是new,要么都是new[],因为构析函数只能有一个4、 应该定义一个复制构造函数,通过深度复制,将一个对象初始化为另一个对象5、 应该定义一个赋值运算符,通过深度复制,将一个对象复制给另一个对象#include
#include
#include
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<

  

转载地址:http://mxevo.baihongyu.com/

你可能感兴趣的文章
python中的时间戳,与MySQL的时间戳的,对应与匹配
查看>>
构造函数(构造器)的正确重载方式------类
查看>>
mysql 存储过程动态执行sql语句
查看>>
Newtonsoft.Json 序列化和反序列化 时间格式
查看>>
java中数据的传递方式到底是怎样的!
查看>>
dp和px的转换
查看>>
手机视频如何下载到本地电脑
查看>>
php基础知识【函数】(9)数学和对象类函数
查看>>
java中this用法
查看>>
1.4 双向循环链
查看>>
遗留的问题,
查看>>
地址,
查看>>
RegexHelper(正则表达式)
查看>>
ORACLE中 schema 和 user 区别
查看>>
Redhat6.5使用centos yum源
查看>>
unity3d与web交互的方法
查看>>
寒假集训日志(三)——数论
查看>>
javascript正则表达式
查看>>
QDU68 UP UP UP!(最长上升子序列个数)
查看>>
ls常用参数
查看>>