String构造函数
只简单写了几个函数
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构造函数的更多相关文章
- String构造函数originalValue.length>size 它发生
最近观看Jdk6于String源代码被发现String这种施工方法有.源内容如下面: public String(String original) { int size = original.coun ...
- c++ string构造函数学习
#include <iostream>#include <string> using namespace std; int main(){ string a1; cout &l ...
- std::string构造函数
string(); string (const string& str); string (const string& str, size_t pos, size_t len = np ...
- 在String中添加移动构造函数和移动赋值运算符
13.50 没有定义析构函数 #include<iostream> #include<string> #include<memory> #include<ut ...
- JavaScript中String对象的方法介绍
1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...
- Java 性能优化之 String 篇
原文:http://www.ibm.com/developerworks/cn/java/j-lo-optmizestring/ Java 性能优化之 String 篇 String 方法用于文本分析 ...
- String类型的属性和方法
× 目录 [1]属性 [2]对象通用方法 [3]访问字符方法[4]字符串拼接[5]创建子串方法[6]大小写转换[7]查找子串位置[8]正则匹配方法[9]去除首尾空格[10]字符串比较 前面的话 前面已 ...
- Java String字符串方法
1.String构造函数 1> String() 2> String(char[] chars) String(char[] chars,int startIndex,int numCha ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
随机推荐
- Shell 全局变量、环境变量和局部变量
Shell 变量的作用域(Scope),就是 Shell 变量的有效范围(可以使用的范围). 在不同的作用域中,同名的变量不会相互干涉,就好像 A 班有个叫小明的同学,B 班也有个叫小明的同学,虽然他 ...
- jQuery的一些简单基础知识
### 什么是jQuery?jQuery(js+Query)是一款优秀的JavaScript库,帮助开发人员用最少的代码做更多的事情,官网网站http://jquery.com/ ### 为什么学习j ...
- CSS3 border-radius 圆角
圆角border-radius,其css如下 IE9+支持(就是ie6,ie7,ie8都不支持),默认值是0,不继承,可以像下面那样设置4个角的值,也可以单独设置,如 border-top-left- ...
- mysql 索引中的USING BTREE 的意义
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. 根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总 ...
- 【MySQL 读书笔记】当我们在使用索引的时候我们在做什么
我记得之前博客我也写过关于索引使用的文章,但是并不全面,这次尽量针对重点铺全面一点. 因为索引是数据引擎层的结构我们只针对最常见使用的 Innodb 使用的 B+Tree 搜索树结构进行介绍. 每一个 ...
- 微信小程序字体设置
微信小程序css篇----字体(Font) 一.字体:font.属性在一个声明中设置所有字体属性. 可设置的属性是(按顺序): "font-style font-variant font-w ...
- Leetcode 5
HashTable Easy 1. 136. Single Number 0与0异或是0,1与1异或也是0,那么我们会得到0 class Solution { public: int singleNu ...
- vue打包静态资源路径不正确的解决办法【转】
vue项目完成打包上线的时候很多人都会碰到静态资源找不到的问题,常见的有两个 1.js,css路径不对 解决办法:打开config/index.js,将其中的assetsPublicPath值改为’. ...
- Nuget 多平台多目标快速自动打包
构建现代的 .Net 应用离不开 Nuget 的支持,而快速打包 Nuget 成了提高生产率的有效方法. 1. 前置条件 为了实现 Nuget 的快速打包,我们需要先解决一些前置依赖,无论是 .Net ...
- mac 重装系统
Mac打算送人,现在退出自己的帐号恢复出厂设置. 协助工具下载:链接:https://pan.baidu.com/s/1vHt-Mk4otawEGidyz_WW2g 提取码:9ax6 用transma ...