利用RALL机制来事项String类的赋值操作
class String{
public:
char *str;
String(const char *ptr=NULL){
if(ptr==NULL)
{
str=NULL;
}else{
str=(char *)malloc(strlen(ptr)+);
strcpy(str,ptr);
}
}
String(const String &ptr)
{
if(ptr.str==NULL)
{
str=NULL;
}else{
str=(char *)malloc(strlen(ptr.str)+);
strcpy(str,ptr.str);
}
}
String &operator=(const String &ptr)
{
if(this!=&ptr)
{
String newptr(ptr);/* 用ptr来初始化这个局部变量然后让局部变量的str指向this的str然后让this的ptr指向局部变量的str
由于除了作用与会释放从而调用析构来释放该this原来的内存
*/
char *tmp=newptr.str;
newptr.str=str;
str=tmp;
}
return *this;
}
~String(){
if(str==NULL)
{
return ;
}else{
free(str);
}
}
void print(){
if(str==NULL)
return ;
cout<<str<<endl;
}
};
int main(){
String a1;
String b("sadda");
a1.print();
b.print();
String a4=b;
a4.print();
}
利用RALL机制来事项String类的赋值操作的更多相关文章
- 20140702 赋值构造函数的形参为什么一定用引用。string类的赋值运算函数的注意点
1.复制构造函数为什么一定要用引用,而不是用值 类名::复制构造函数(类名&引用名) 传递引用,可以避免复制,如果一个数据相当大的化,进行复制会浪费很多时间的. 类名::复制构造函数(类名 变 ...
- [C++]-string类的常用操作
代码 #include<iostream> #include<string> #include<algorithm> using namespace std; in ...
- C++ string类及其函数的讲解
文章来源于:http://www.cnblogs.com/hailexuexi/archive/2012/02/01/2334183.html C++中string是标准库中一种容器,相当于保存元素类 ...
- String 类的实现(3)引用计数实现String类
我们知道在C++中动态开辟空间时是用字符new和delete的.其中使用new test[N]方式开辟空间时实际上是开辟了(N*sizeof(test)+4)字节的空间.如图示其中保存N的值主要用于析 ...
- (转)C++——std::string类的引用计数
1.概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里 ...
- String 类的实现(2)引用计数与写时拷贝
1.引用计数 我们知道在C++中动态开辟空间时是用字符new和delete的.其中使用new test[N]方式开辟空间时实际上是开辟了(N*sizeof(test)+4)字节的空间.如图示其中保存N ...
- STL 的string类怎么啦?
前言 上个周末在和我的同学爬香山闲聊时,同学说到STL中的string类曾经让他备受折磨,几年前他开发一个系统前对string类还比较清楚,然后随着程序的复杂度的加深,到了后期,他几乎对strin ...
- C++ string 类
标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为 ...
- 菜鸡的Java笔记 第十三 String 类的两种实例化方法
String 类的两种实例化方法 String 类的两种实例化方式的区别 String 类对象的比较 Stirng 类对象的使用分析 /* 1.String 类的两种实例化方式的区别 ...
随机推荐
- .net 本地日志的添加
/// <summary> /// 写入日志到文本文件 /// </summary> /// <param name="userName">用户 ...
- 201771010126 王燕《面向对象程序设计(Java)》第七周实验总结
实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: private--私有域或私有方法:只能在定义它的类中使用 public--公 ...
- 《SpringMVC从入门到放肆》六、SpringMVC开发Controller的方法总结
到目前为止我们已经大概学习了StringMVC的执行流程,以及详细的处理器映射器和处理器适配器的执行流程,并可以自己写一个配置方式开发的小Demo了.今天我们来总结一下实现一个Controller的几 ...
- __x__(29)0908第五天__高度塌陷 问题
高度塌陷 在文档流中,父元素的高度默认是被子元素撑开的. 但是当为 子元素 设置 float 时,子元素会完全脱离文档流,无法再撑开父元素,导致父元素高度塌陷...以致于布局混乱 变成 BFC块级格式 ...
- 常用 jq 正则 包含手机正则,邮箱正则。。。
常用 jq 正则规则 1.手机 /^1(3|4|5|7|8)\d{9}$/ 2.qq /^[1-9][0-9]{5,10}$/ 3.邮箱 /^\w+((-\w+)|(\.\w+))*\@[ ...
- css-不固定宽高定位
position: fixed; top:50%; left: 50%; transform: translate(-50%, -50%);
- 使用Java程序读取JPG Tif等格式图片的exif信息
package com.util; import java.io.File;import java.util.Iterator; import com.drew.imaging.ImageProces ...
- mysql中各种日期数据类型及其所占用的空间
DATETIME,8字节: DATE,3字节: TIMESTAMP,4字节: YEAR,1字节: TIME,3字节:
- ListView添加图片文字项
1)listview 控件 结合 imagelist 控件 实现类似效果. 2)添加 imagelist 控件 images 属性,点击后面的... 添加相应图片. 3)点listview,查看其属性 ...
- AIROBOT系统 之 网络配置
需求背景 在上一个章节我们讲究了私有云的部署,但是会有一个问题,我如果在外面,如何访问家里电脑上部署的私有云服务?其实这个问题在扩大化说 就是 如何可以在家庭网络以外 可以访问到 家庭网络:公网 访问 ...