只简单写了几个函数

class String
{
public:
String(const char* pStr = NULL);
String(const String& str);
virtual ~String();
String &operator =(const String& str);
int Length() const;
const char* cstr() const;
friend std::ostream& operator<<(std::ostream& os, const String& str); private:
char* m_pData;
};
String::String(const char* pStr)
{
if (pStr == NULL)
{
m_pData = new char('\0');
}
else
{
m_pData = new char[strlen(pStr) + ];
strcpy(m_pData, pStr);
}
} String::String(const String& str)
{
m_pData = new char[str.Length() + ];
strcpy(m_pData, str.cstr());
   //类的成员函数可以直接访问作为其参数的同类型对象的私有成员。
   //即可写为strcpy(m_pData, str.m_pData);
}

int String::Length() const
{
return strlen(m_pData);
} const char * String::cstr() const
{
return m_pData;
} String::~String()
{
if (m_pData)
delete[] m_pData;
} String& String::operator =(const String& str)
{
if (this == &str)
return *this; delete[] m_pData;
m_pData = new char[str.Length() + ];
strcpy(m_pData, str.cstr()); return *this;
} std::ostream& operator<<(std::ostream& os, const String& str)
{
return os << str.cstr();
}
int main()
{
String s;
cout << s << endl; String s1("hello");
cout << s1 << endl; String s2(s1);
cout << s2 << endl; String s3("hello world");
cout << s3 << endl; s3 = s2;
cout << s3 << endl; String s4 = "lwm";
cout << s4 << endl; return ;
}

运行结果:

String构造函数的更多相关文章

  1. String构造函数originalValue.length&gt;size 它发生

    最近观看Jdk6于String源代码被发现String这种施工方法有.源内容如下面: public String(String original) { int size = original.coun ...

  2. c++ string构造函数学习

    #include <iostream>#include <string> using namespace std; int main(){ string a1; cout &l ...

  3. std::string构造函数

    string(); string (const string& str); string (const string& str, size_t pos, size_t len = np ...

  4. 在String中添加移动构造函数和移动赋值运算符

    13.50 没有定义析构函数 #include<iostream> #include<string> #include<memory> #include<ut ...

  5. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

  6. Java 性能优化之 String 篇

    原文:http://www.ibm.com/developerworks/cn/java/j-lo-optmizestring/ Java 性能优化之 String 篇 String 方法用于文本分析 ...

  7. String类型的属性和方法

    × 目录 [1]属性 [2]对象通用方法 [3]访问字符方法[4]字符串拼接[5]创建子串方法[6]大小写转换[7]查找子串位置[8]正则匹配方法[9]去除首尾空格[10]字符串比较 前面的话 前面已 ...

  8. Java String字符串方法

    1.String构造函数 1> String() 2> String(char[] chars) String(char[] chars,int startIndex,int numCha ...

  9. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...

随机推荐

  1. 前端架构师 摘自《前端架构设计》-micah godbolt

    作为前端架构师,你经常需要制定,或至少能够掌握以上所列的每一项内容.流程中的任何一个环节出现问题,都会迅速演变为开发人员的痛苦,或者导致网站无法持续满足用户要求,甚至崩溃.  前端架构师的用户是开发人 ...

  2. dede织梦 arclist标签完美支持currentstyle属性

    由于客户需求,所以进行对文章的arclist标签进行设置当前样式(currentstyle),修改前记得备份. dede版本v5.7sp 找到PHP修改: include/taglib/arclist ...

  3. 在C++中定义常量

    在 C++ 中,有两种简单的定义常量的方式: 使用 #define 预处理器. 使用 const 关键字 使用 #define 预处理器: #define identifier value: #inc ...

  4. python 绘制柱状图

    python 绘制柱状图 import matplotlib.pyplot as plt import numpy as np # 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英 ...

  5. Pyhon进阶9---类的继承

    类的继承 基本概念 定义 格式如下 继承中的访问控制 class Animal: __CNOUT = 0 HEIGHT = 0 def __init__(self,age,weight,height) ...

  6. Linux调整日期时间

    Linux日期不准确,要更改 Linux 系统整个系统范围的时区可以使用如下命令: sudo rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/A ...

  7. swiftmailer时没有设置https的选项,才可以发送成功。在linux下面

    <?php $su = 'register'; $ge = '1362836763@qq.com'; $co = 'Please register!'; send_mail($su,$ge,$c ...

  8. Vue-详解设置路由导航的两种方法

    https://www.cnblogs.com/superlizhao/p/8527317.html

  9. Oracle左连接、右连接、全外连接、(+)号作用

    在Oracle中,对于外连接, 也可以使用"(+) "来表示. 关于使用(+)的一些注意事项: 1.(+)操作符只能出现在where子句中,并且不能与outer join语法同时使 ...

  10. HTML&CSS_基础01

    一.预备知识: # 1. HTML5 是 W3C 与 WHATWG 合作的结果.    W3C 指 World Wide Web Consortium,万维网联盟.    WHATWG 指 Web H ...