听侯捷老师讲课的笔记:

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类的写法的更多相关文章

  1. C++面试中string类的一种正确写法

    C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...

  2. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  3. Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式

    一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...

  4. VC++ 标准C++中的string类的用法总结

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  5. [C++][语言语法]标准C++中的string类的用法总结

    转自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include ...

  6. Hibernate中Entity实体类的写法

    记录下一个Entity类的写法,方便以后查阅: package com.bupt.auth.entity; import java.util.Date; import javax.persistenc ...

  7. c++中string类的详解

    ,<时返回-1,==时返回0  string的子串:string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串strin ...

  8. C++ string类的学习

    string类对于处理字符串的一些应用非常的方便,我个人感觉,string和字符数组const char *很像,而且又比字符数组用起来方便的多. 注意其删除,取子串,插入等函数里面都有一个重载版本是 ...

  9. 标准C++中string类的用法

    转自博客园:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 相信使用过MFC编程的朋友对CString这个类的印象应该非 ...

随机推荐

  1. C# 缓存技术

    缓存主要是为了提高数据的读取速度.因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高程序的性能. 本章从缓存 ...

  2. ConcurrentHashMap的使用和原理

    呵呵呵,原理nmb. HashTable,HashMap,ConcurrentHashMap 当你作为一个菜鸡的时候,别人就会那这个来问你. 为什么要用ConcurrentHashMap,因为Hash ...

  3. Educational Codeforces Round 27 F. Guards In The Storehouse

    F. Guards In The Storehouse time limit per test 1.5 seconds memory limit per test 512 megabytes inpu ...

  4. 线性判别函数-Fisher 线性判别

    这是我在上模式识别课程时的内容,也有参考这里. 线性判别函数的基本概念 判别函数为线性的情况的一般表达式 式中x是d 维特征向量,又称样本向量, 称为权向量, 分别表示为 是个常数,称为阈值权. 设样 ...

  5. mysqldump命令使用详解

    mysqldump是一个数据库备份程序 用法:mysqldump [options] [db_name [tbl_name ...]] 描述:mysqldump是一个客户端逻辑备份的工作,备份的SQL ...

  6. Git客户端搭建环境(Windows系统)的使用

    本文环境: 操作系统:Windows XP SP3 Git客户端:TortoiseGit-1.8.8.0-32bit 一.安装Git客户端 全部安装均采用默认! 1. 安装支撑软件 msysgit:  ...

  7. spring;maven;github;ssm;分层;timestamp;mvn;

    [说明]本来还想今天可以基本搭建一个合适的ssm环境呢,结果发现,,太特么复杂了,网上的例子有好多,看了好多,下面的评论或多或少都有说自己运行产生问题的,搞的我也不敢好好下载运行 [说明]没办法,将目 ...

  8. jqweui tabbar使用示例

    <!DOCTYPE html> <html class="pixel-ratio-1"> <head> <meta http-equiv= ...

  9. Python菜鸟之路:Python基础(二)

    一.温故而知新 1. 变量命名方式 旧的方式: username = 'xxxx' password = 'oooo' 新的方式: username, password = 'xxxx', 'oooo ...

  10. mysql 分页测试,

    大环境:MySQL5.6 自己造了 27万数据, 一次性 查出来,会超时: 而分页跑,会查出来8s: 但是在少于27万时,直接查比 分页查快5倍: