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这个类的印象应该非 ...
随机推荐
- Android sdk 更新失败解决方发整理
解决办法: 设置本地hosts windows里hosts位置在C:\Windows\System32\drivers\etc,找到hosts文件 直接在hosts文件的最后加一行: 74.125.2 ...
- 机器学习7—AdaBoost学习笔记
Adaboost算法原理分析和实例+代码(简明易懂)(转载) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/709953 ...
- linux应用网址
APUE学习:(十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字 linux应用学习笔记(已列目录供跳转):http://www.cnblogs.com/ggj ...
- Java中的各种锁--分类总结
前言 本文需要具备一定的多线程基础才能更好的理解. 学习java多线程时,最头疼的知识点之一就是java中的锁了,什么互斥锁.排它锁.自旋锁.死锁.活锁等等,细分的话可以罗列出20种左右的锁,光是看着 ...
- github 答题
头脑王者 / 百万英雄 / 冲顶大会 / 芝士超人 自动答题:https://github.com/cxs1994/python_answer 头脑王者:https://github.com/sear ...
- spring工作原理理解
spring的工作原理 spring是作为一个容器存在的框架,可以加载spring web,spring mvc,spring orm,sprong aop,spring dao等框架和模块,其主要核 ...
- Ubuntu 12.04使用uginx+fastcgi-mono-server2部署asp.net 网站
Ubuntu 12.04使用uginx+fastcgi-mono-server2部署asp.net 网站 1.安装nginx和mono-fastcgi-server2 sodu apt-get in ...
- Spring MVC中的模型数据处理
一.综述 Spring MVC 提供了以下途径来输出模型数据: 1.ModelAndView 当处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据到请求域. 2.Ma ...
- zipkin环境搭建
基于jdk1.8 下载zipkin jar包 用wget下载zipkin官方最新jar包 wget -O zipkin.jar 'https://search.maven.org/remote_con ...
- PAT 1054. 求平均值 (20)
本题的基本要求非常简单:给定N个实数,计算它们的平均值.但复杂的是有些输入数据可能是非法的.一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位.当你计算平均值的时候, ...