利用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 类的两种实例化方式的区别 ... 
随机推荐
- git操作:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (警告:远程主机标识已更改!)
			问题背景: 前几日,把云服务器系统由centos改成Ubuntu之后,重新搭建的git服务器环境. 问题描述: 从本机不能clone远程git仓库. 报错如下: @@@@@@@@@@@@@@@@@@@ ... 
- 一份详细的asyncio入门教程
			asyncio模块提供了使用协程构建并发应用的工具.它使用一种单线程单进程的的方式实现并发,应用的各个部分彼此合作, 可以显示的切换任务,一般会在程序阻塞I/O操作的时候发生上下文切换如等待读写文件, ... 
- python底层原理
			有同学问到了一个问题,python中存储变量是通过内存地址来存储,那么python又是如何去判断内存中的地址是什么数据类型的呢.经过查找,找到这篇文章: 原博客地址:http://www.cnblog ... 
- 基于.net的微服务架构下的开发测试环境运维实践
			眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ... 
- Hadoop双namenode配置搭建(HA)
			配置双namenode的目的就是为了防错,防止一个namenode挂掉数据丢失,具体原理本文不详细讲解,这里只说明具体的安装过程. Hadoop HA的搭建是基于Zookeeper的,关于Zookee ... 
- JDBC API 事务的实践
			使用了持久化框架几乎没有使用过原生的jdbc API ,发现原来使用jdbc API来实现事务也是很简单的. 数据库的链接connection具有一个属性autocommit,这个属性默认是true, ... 
- Nginx配置:nginx如何配置跳转fpm
			location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_inf ... 
- PAT甲级1123 Is It a Complete AVL Tree【AVL树】
			题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805351302414336 题意: 给定n个树,依次插入一棵AVL ... 
- Bear + Reminders 是完美的Thing 3 的替代品
			如今同类功能的APP在AppStore上呈现泛滥之势,尤其是时间管理.任务管理之类的APP.其中比较出名的就有“Things 3”这款APP,这是一款多年不更新,一更新就获奖的APP.目前在AppSt ... 
- 20175320 2018-2019-2 《Java程序设计》第8周学习总结
			20175320 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 本周学习了教材的第十五章的内容,在这章中介绍了泛型和集合框架,着重讲了泛型类的概念,并介绍了 ... 
