`

编写类String的构造函数、析构函数和赋值函数

阅读更多

01.#include <iostream.h>
02.#include <assert.h>
03.
04.
05.
06.char* strCopy(char* pDest, const char* pSrc)
07.{
08. assert((pDest != NULL) && (pSrc != NULL));
09.
10.
11. char *pTmp = pDest;
12. while (*pSrc!='\0')
13. {
14. *pDest=*pSrc;
15. pDest++;
16. pSrc++;
17. }
18. *pDest=NULL;
19. return pTmp;
20.}
21.
22.int strlength(const char *str)
23.{
24. int len=0;
25. for(int i=0;str[i]!=NULL;i++)
26. len++;
27.
28. return len;
29.}
30.
31.
32.
33.class String
34.{
35.public:
36.
37. String(const char *str = NULL); // 普通构造函数
38. String(const String &other); // 拷贝构造函数
39. ~String();
40. String & operator =(const String &other);
41. void output();
42.
43.private:
44. char* m_data; // 用于保存字符串
45.
46.};
47.
48.String::~String()
49.{
50. delete[] m_data;
51.}
52.
53.String::String(const char *str)
54.{
55. if(str==NULL)
56. {
57. m_data = new char[1]; // 若能加 NULL 判断则更好
58. *m_data = NULL;
59. }
60.
61. else
62. {
63. int length = strlength(str);
64. m_data = new char[length+1]; // 若能加 NULL 判断则更好
65. strCopy(m_data, str);
66. }
67.}
68.
69.String::String(const String &other)
70.{
71. int length = strlength(other.m_data);
72. m_data=new char [length+1];
73.
74. strCopy(m_data,other.m_data);
75.}
76.
77.String & String::operator =(const String &other)
78.
79.{
80. if(this == &other)
81. return *this;
82.
83. delete [] m_data;
84.
85.
86. int length = strlength(other.m_data);
87. m_data = new char[length+1];
88. strCopy(m_data, other.m_data);
89.
90. return *this;
91.}
92.
93.
94.void String::output()
95.{
96. cout<<m_data<<endl;
97.}
98.
99.
100.int main()
101.{
102. String s1("zhuzai");
103. s1.output();
104. String s2("11sunhongfeng");
105. s1=s2;
106. s1.output();
107.
108. return 1;
109.}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ljob2006/archive/2009/03/18/4001372.aspx

分享到:
评论

相关推荐

    编写类String 的构造函数、析构函数和赋值函数.docx

    本题主要考察的是如何为一个名为`String`的类编写构造函数、拷贝构造函数、析构函数以及赋值运算符。下面将详细解释这些函数的作用以及如何实现它们。 1. **构造函数**: - `String(const char *str = NULL)` 是一...

    编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数[文].pdf

    strcpy 函数和类 String 的构造函数、析构函数、赋值函数和重载运算符函数 strcpy 函数是 C 语言中最基本的字符串拷贝函数,它的原型是 `char *strcpy(char *strDest, const char *strSrc);`,其中 `strDest` 是...

    详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数

    详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数  编写类String 的构造函数、析构函数和赋值函数,已知类String 的原型为: class String { public: String(const char *str = NULL); // 普通...

    编写strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数

    主要包含了strcpy函数和类String的构造函数、析构函数、赋值函数和重载运算符函数等代码实现。

    编写类String的构造函数

    根据给定的文件信息,我们将深入探讨如何实现一个自定义的`String`类,并重点讲解其构造函数、析构函数、拷贝构造函数以及赋值操作符。在C++编程语言中,这些成员函数对于正确地管理动态分配的内存至关重要。 ### ...

    高质量C++C编程指南 - 第9章 类的构造函数、析构函数与赋值函数.pdf

    "高质量C++编程指南 - 第9章 类的构造函数、析构函数与赋值函数" 本章主要介绍了C++类中的三个基本函数:构造函数、析构函数与赋值函数。这些函数看似简单,但如果不正确地使用它们,可能会导致程序出错。 首先,...

    C/C++面试题:编写类String的构造、析构和赋值函数

    本文主要介绍了C/C++面试题:编写类String的构造、析构和赋值函数的编写方法,解析构造函数、析构函数和赋值函数的编写方法。 构造函数 构造函数是类的特殊成员函数,用来初始化类的对象。构造函数的名称与类名...

    C++构造函数[定义].pdf

    总之,理解并正确使用构造函数、析构函数以及赋值函数是C++编程中的关键技能,它们对对象生命周期的管理和资源的有效管理起着至关重要的作用。不重视这些函数的细节可能导致难以预料的程序行为和内存泄漏。因此,...

    string的常用函数

    #### 二、构造函数与析构函数 `std::string` 类提供了多种构造方法来创建字符串对象: 1. **默认构造函数**:`std::string s;` 创建一个空字符串。 2. **拷贝构造函数**:`std::string s(str);` 创建一个新的字符...

    自己实现string函数功能

    析构函数mystring::~mystring()用于释放m_data所占用的内存空间,以避免内存泄露。 在Main函数中,我们使用了mystring类,演示了如何使用mystring对象并调用其成员函数。我们创建了三个mystring对象str1、str2和str...

    string类的代码

    总的来说,`myString`类体现了C++中类的基本构造,包括构造函数、析构函数、赋值运算符的重载以及友元函数的使用。通过这个例子,我们可以学习到如何管理动态内存、处理异常、以及实现基本的字符串操作。这些知识...

    面向设计c++类与对象的使用

    析构函数`~student`用于清理对象所使用的资源,特别是在这里释放之前动态分配的内存。 ```cpp student::~student() { delete[] num; delete[] name; } ``` - **释放内存**:使用`delete[]`操作符释放之前通过`...

    c++编写String类代码实例

    下面将详细介绍 C++ 编写 String 类的代码实例,包括普通构造函数、拷贝构造函数、析构函数、赋值函数、重载 + 号和 = 号等操作符。 1. 普通构造函数 在 C++ 中,String 类的普通构造函数用于初始化字符串对象。该...

    用c++实现的String类

    3. **析构函数**:释放动态分配的内存,防止内存泄漏。 4. **运算符重载**:为了提供与C++内置字符串类似的接口,我们需要重载常见的操作符,如`+`(拼接)、`=`(赋值)、`[]`(下标访问)等。 5. **成员函数**:...

    高质量C++编程

    #### 九、类的构造函数、析构函数与赋值函数 **9.1 构造函数与析构函数的起源** 构造函数和析构函数是C++中用于对象生命周期管理的关键机制,了解它们的起源有助于更好地使用它们。 **9.2 构造函数的初始化表** ...

    自己写的String类

    通过编写自己的`String`类,开发者可以深入理解C++的内存管理、构造函数和运算符重载等核心概念。同时,这也是一个很好的机会去实践C++的编码风格和良好的编程习惯。在初学阶段,这将有助于为更复杂的编程挑战打下...

    C++string类的模拟实现

    总结而言,模拟实现C++标准库中的string类,需要深入理解其内部机制和实现细节,通过编写合适的构造函数、析构函数、运算符重载以及成员函数,我们可以构建一个功能强大且高效的string类。这不仅锻炼了对C++语言特性...

    高质量C++编程指南

    - **示例:类STRING的构造函数与析构函数**:通过一个字符串类的例子来展示构造函数和析构函数的设计方法。 - **不要轻视拷贝构造函数与赋值函数**:强调了拷贝构造函数和赋值函数的重要性,避免潜在的问题。 - **...

Global site tag (gtag.js) - Google Analytics