String类的写法
听侯捷老师讲课的笔记:
string.h头文件:
#pragma once
class String
{
public:
String(const char* cstr);
String(const String& str);
String& operator =(const String& str);
~String(); char* get_c_str() const { return m_data; }//这个类的成员函数内的所有操作,不准备改变私有数据m_data,所以要加上
//const去修饰这个函数,一出手就要:不同凡响
private:
char* m_data;
}; inline String::String(const char* cstr=)
{
if (cstr)
{
std::cout << "如果传进来的字符串不为空,它就是:"<<std::endl;
m_data = new char[strlen(cstr) + ];
strcpy(m_data, cstr);
}
else
{
std::cout << "如果传进来的字符串为空,它就是:" << std::endl;
m_data = new char[];
*m_data = '\0';
}
}
inline String::~String()
{
std::cout << std::endl << "析构函数此时被调用!" << std::endl;
delete[] m_data;
}
//编写拷贝构造函数
inline String::String(const String& str)
{
m_data = new char[strlen(str.m_data)+];
strcpy(m_data, str.m_data);
} //编写拷贝赋值函数
inline String& String::operator =(const String& str)
{
if (this == &str)
return *this;
delete[] m_data;
m_data = new char[strlen(str.m_data) + ];
strcpy(m_data, str.m_data);
return *this;
} //重载输出符<<
#include<iostream>
std::ostream& operator <<(std::ostream& os, const String& str)
{
os << str.get_c_str();
return os;
}
string.cpp源文件:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include"string.h" using namespace std;
int main()
{ String str("Greetings!,china!");
cout <<"str: "<< str << endl; cout << endl;
String* p = new String("hello,world!");
cout << "*p: " << *p << endl;
delete p; cout << endl;
String str1("to be or not to be");
cout << "str1: " << str1 << endl; cout << endl;
String str2("to be or not to be");
cout << "str2: " << str2 << endl; cout << endl;
String str3;
str3 = str2;
cout << "str3: " << str3 << endl; cout << endl;
cout << "在做自我赋值str3 = str3之后:" << endl;
str3 = str3;
cout << "str3: " << str3 << endl; system("pause");
return ;
}
String类的写法的更多相关文章
- C++面试中string类的一种正确写法
C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...
- 标准C++中的string类的用法总结
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- VC++ 标准C++中的string类的用法总结
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...
- [C++][语言语法]标准C++中的string类的用法总结
转自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include ...
- Hibernate中Entity实体类的写法
记录下一个Entity类的写法,方便以后查阅: package com.bupt.auth.entity; import java.util.Date; import javax.persistenc ...
- c++中string类的详解
,<时返回-1,==时返回0 string的子串:string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串strin ...
- C++ string类的学习
string类对于处理字符串的一些应用非常的方便,我个人感觉,string和字符数组const char *很像,而且又比字符数组用起来方便的多. 注意其删除,取子串,插入等函数里面都有一个重载版本是 ...
- 标准C++中string类的用法
转自博客园:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非 ...
随机推荐
- Mysql主从配置笔记
1.配置my.cnf无效,且mysql进程无法启动 从5.1.7版本开始,不再支持my.cnf直接配置master-host等主从相关配置选项(依然支持replicate-do-db).改为使用 CH ...
- Idea中优化Markdown Support显示效果
转自:https://www.jianshu.com/p/d093c42a8c29 因为工作中为提高工作效率,我一般习惯于直接在`idea`中使用`markdow support`插件来进行相关文档的 ...
- 嵌入式开发之qt socket--- qt 封装的socket demo
http://wuyuans.com/2013/03/qt-socket/ http://blog.chinaunix.net/uid-22480862-id-388253.html
- 什么是scale up和scale out
Scale Out(也就是Scale horizontally)横向扩展,向外扩展Scale Up(也就是Scale vertically)纵向扩展,向上扩展无论是Scale Out,Scale Up ...
- C#获取当前时间的各种格式
C#获取当前时间的各种格式 DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now; dt.ToString();//2005 ...
- 移动端meta viewport
<meta name="viewport" content=" width=device-width, user-scalable=no, initial-scal ...
- html/css背景图片自适应分辨率大小
<style type='text/css'> .bgbox { position: absolute; left: 0; top: 0; width: 100%; overflow: h ...
- Linux安装Nginx使用负载均衡
1.实验准备准备三台计算机 nginx1 192.168.13.121 作为nginx负载均衡器nginx2 192.168.13.24 web服务,提供一个页面 nginx3 192 ...
- goland中引用包
首先在工程目录下新建三个目录:bin, pkg,src Bin文件夹是放置编译后的exe文件 Pkg文件夹是放置包生成后的.a文件 Src文件夹是放置包文件的地方 工程组织目录如下,在src中有tes ...
- 关于 IN UPDATE TASK
[转 http://blog.sina.com.cn/s/blog_6f74e6d50100sq57.html]更新程序必须用一个特殊的FM(update module)来实现. 1.Exportin ...