string类的构造和析构

class String

{

public:

  String(const char * str);

  String(const String & other);

  ~String();

  String& operator=(const String & other);

private:

  char * m_data;

}

String::~String()

{

  delete [] m_data;

}

String::String(const char * str)

{

  if(str == NULL)

  {

    m_data = new char[1];

    m_data[0] = ‘\0‘;

  }

  else

  {

    int length = strlen(str);

    m_data = new char[length + 1];

    strcpy(m_data, str);

  }

}

String::String(const String & other)

{

  int length = strlen(other.m_data);

  m_data = new char[length + 1];

  strcpy(m_data, other.m_data);

}

String & String::operator=(const String & other)

{

  if(this == &other)

    return *this;  //如果地址相同时,直接返回

  delete [] m_data;  //释放原来的内存

  int length = strlen(other.m_data);

  m_data = new char[length + 1];

  strcpy(m_data, other.m_data);

  return *this;

}

时间: 2024-10-19 13:55:07

string类的构造和析构的相关文章

Scanner的概述与String类的构造和使用_DAY12

1:Scanner的概述(理解) 1)Scanner是JDK5以后出现的方便我们从键盘接受数据的类. 2)Scanner的构造格式: Scanner sc = new Scanner(System.in); System.in 是System类下面有一个静态的成员变量in.它的类型是InputStream. 代表的是标准键盘输入流.也就是键盘录入数据. Scanner是对其进行了封装,提供了各种转换功能.方便我们获取到想要的数据类型的数据. 3)要掌握的两个功能: A:返回int类型 publi

第八周 项目四-string类的构造

请构造String类的加.减运算.其中,s1 + s2将两个字符串的连接起来:s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接. 提示:有指针成员,设计时要注意.这个,你懂的. #include <iostream> #include <Cstring> using namespace std; class String { public: String( ); //默认构造函数 String(const char *s); String(String &str

第八周项目四-String类的构造

写一个能处理字符串的类. #include <iostream> #include <Cstring> using namespace std; class String { public: String( ); //默认构造函数 String(const char *s); String(String &str); //构造函数 ~String(); void display( ); friend String operator + (String &s1,Str

[转]python self、类、构造和析构方法 简单学习

self可以理解为自己类似于C++中的this指针,就是对象自身的意思,在用某个对象调用该方法时,就将该对象作为第一个参数传递给self python的类中有属性.方法:其中属性可以有私有和公有之分,方法可以对私有属性进行限定和保护,类似于C#中属性的功能. 方法也有私有和公有,__方法前面两个下划线 类,具有相似内部状态和运动规律的实体的集合(统称.抽象)具有相同属性和行为事物的统称,类是抽象的,使用时找到类的具体存在,使用这个具体存在--对象类是对象的模板  类:类名.属性.方法 class

类的构造和析构

import Foundation class TV{ var name:String="chuangwei" init(){} init(name:String){ self.name=name } deinit{ name="" } } var myTV=TV(name:"haixin") println(myTV.name)

C++ String类 ( 构造、拷贝构造、赋值运算符重载和析构函数)

class String { public: //普通构造函数 String(const char *str = NULL) { if(str == NULL) { m_data = new char[1]; *m_data = '\0'; } else { m_data = new char[strlen(str) + 1]; strcpy(m_data, str); } } //拷贝构造函数 String(const String &s) { m_data = new char[strlen

[c++]容器类。继承类的构造和析构

#include<iostream> using namespace std; class Base { int x; public: Base(int a) { x = a; cout<<"father constructing "<<x<<endl; } ~Base() { cout<<"father destructing "<<x<<endl; } }; class Derv

Delphi2010新发现-类的构造和析构函数功能

Delphi2010发布了. 虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究. 今天有点时间试了一下新功能. 本来C#和Delphi.NET是支持类的构造函数/析构函数的(注意不是实例的构造和析构).也就是在模块初始化/卸载的时候会调用. 这样有很多好处,比如说类的静态变量的初始化什么的都可以在这里做. Delphi For Win32对这方面的需求还不是很大. 第一个原因.历史上旧版Delphi不支持静态变量.只能用Unit的全局变

【C/C++学院】0819-/类的成员函数与const-mutable /构造与析构/拷贝构造deletedefault以及深浅拷贝/静态成员函数成员变量类在内存的存储默认参数/友元类以及友元函数

类的成员函数与const-mutable 成员函数 Fushu.h #pragma once #include <iostream> class fushu { public: int x; int y; public: fushu(); ~fushu(); void show(); inline void showall(int x, int y);//显式内联 void setxy(int x, int y);//编译器优化,默认隐式内联 void show(int x, int y);