利用RALL机制来事项String类的赋值操作

class String{

public:
    char *str;
    String(const char *ptr=NULL){
        if(ptr==NULL)
        {
            str=NULL;
        }else{
            str=(char *)malloc(strlen(ptr)+1);
            strcpy(str,ptr);
        }
    }
    String(const String &ptr)
    {
        if(ptr.str==NULL)
        {
            str=NULL;

        }else{

            str=(char *)malloc(strlen(ptr.str)+1);
            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();

}

原文地址:https://www.cnblogs.com/jzlzn/p/10449916.html

时间: 2024-08-15 21:04:34

利用RALL机制来事项String类的赋值操作的相关文章

String类的常用操作整理

一.String类 字符与字符串操作: public char charAt(int index) 根据下标找到指定字符 public char[] toCharArray() 以字符数组的形式返回全部的字符串内容 public String(char[] value) 将全部的字符数组变成字符串 构造方法 public String(char[] value,int offset,int count) 将指定范围的字符数组变为字符串 构造方法 二.String类 字节与字符串操作 public

Java关于String类的赋值符号一些验证

我们都知道,很多Java书中说String对象的内容不能修改,但在实际情况中赋值符号还是可以用在已创建的String类对象中,如下面的代码所示: 1 String s1 = "abs"; 2 String s2 = "abs"; 3 System.out.println("before change:"); 4 System.out.println("s1 is "+s1); 5 System.out.println(&quo

c++string类的相关操作

string的应用是非常典型的,下面我写了一些简单的string类的相关的一些操作,包括增删查改等一些功能和一些运算符的重载,包括他们的测试用例: #include<iostream>#include<string>#include<assert.h>using namespace std; #define CARA 3;class String{public: String(char *str = "")  :_str(new char[strle

String类的常见操作

一.String类概述 1.String的值是一个对象,也是一个常量不能被改变 2.String的equals方法是比较两个字符串的内容 3.String s1=”abc”  String s2=new String(“abc”) s1有一个对象,s2有两个对象 二.String常见功能---获取和判断 1.获取 1.1 字符串中包含的字符数,也就是字符串的长度. int length():获取长度. 1.2 根据指定位置获取位置上的某个字符 char charAt(int index) 1.3

利用反射机制动态的调用类信息

public class reflectTest { /** * 利用反射设置实体类的属性 * * @return * @throws ClassNotFoundException * @throws IllegalAccessException * @throws InstantiationException * @throws NoSuchFieldException * @throws SecurityException * @throws NoSuchMethodException *

Java中String类(字符串操作)的10个常见问题和解决方法

注:来自百度搜索,还没有码一遍,一定要码!! 1. 字符串比较,使用 "==" 还是 equals() ?简单来说, "==" 判断两个引用的是不是同一个内存地址(同一个物理对象).而 equals 判断两个字符串的值是否相等.除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法.如果你了解 字符串的驻留 ( String Interning ) 则会更好地理解这个问题 2. 对于敏感信息,为何使用char[]要比String更好?

java String类-字符串常见操作

/* String常见的操作: String str="abchgthujidfg"; 1,获取 1.1字符串包含的字符数,即字符串的长度. int lenrth(): str.length();   //注意字符串获取长度的方法区别于数组获取长度的方法.数组采用格式:arr.length 1.2根据位置获取位置上的字符. char charAt(int index): str.charAt(4); 1.3根据字符获取该字符的位置. int indexOf(int ch): str.i

String类--字符串截取操作

运行结果:书中自有黄金屋 书中自有颜如玉 substring--方便将所要的字符串进行截取!!

说说string类

1. 为什么会有string类 处理char型数组,封装标准C中一些字符串处理函数. 容器 2. 规格:有106个成员接口函数. 有如此之多的原因: 提高效率.(设计比较冗余,为了追求效率,省去了调用构造/析构函数及分配/释放内存的时间) 用于实现常用操作 3.实现:C++标准没有过多干预,不同厂商有不同实现. 4.缺陷 不支持多进/线程: 模板技术水平没跟上: 接口函数设计比较冗余,同一个功能上实现了多次,而有一些功能却没有实现,且陷阱多: 不支持虚函数,阻止了多态性: 加剧了内存碎片问题.希