实现一个string类
实现要实现:构造,析构,拷贝构造,赋值的功能
1. 提供构造函数 string(), string(const string & str),string(const char * str),
2. 析构函数: ~ string()
3. 成员函数(重载赋值函数):string &operator=(const string & str); 利用已有的string对象赋值
string & operator=(const char * str);// 直接用字符串赋值用char * 实现;
(返回引用,返回对象本身。 传入参数const & 常量引用,传入本身不能改)
4. 成员函数(处理字符串的成员函数):
size_t size() const; //返回常量
void swap(string & str);//交换两个字符串
5. 成员函数(操作符重载):
。。。。
#include <iostream>
#include <utility>
#include<stdio.h>
#include <string.h>
using namespace std; class String{ private:
char * data_;
public:
size_t size()const
{
return strlen(data_);
}
const char * c_str() const{
return data_;
}
//无参的构造函数
String():data_(new char[])//初始化类的成员data_,为初始化列表的方式。
{
//初始化列表也可以表示为
// data_=new char[1];
*data_='\0';
}
//有参的构造函数
String(const char *str) :data_(new char[strlen(str)+])
// strlen(str)必须为常量;
{
strcpy(data_,str);
}
String(const String & s):data_(new char[s.size()+])
{
strcpy(data_,s.c_str());// 有一个值为const
} //析构函数
~String ()
{
delete[] data_;
} //函数返回引用返回的是对象本身
String& operator=(String s)
{
swap(data_,s.data_);
return *this;
} };
实现一个string类的更多相关文章
- C++自己实现一个String类
C++自己实现一个String类(构造函数.拷贝构造函数.析构函数和字符串赋值函数) #include <iostream> #include <cstring> using ...
- 关于如何来构造一个String类
今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实现..... 内容写的过于简单,没有涉及到其 ...
- 构造一个String类
#include "stdafx.h" #include<iostream> #include<string.h> using namespace std; ...
- C++学习之路(六):实现一个String类
直接贴代码吧,这段时间准备面试也正好练习了一下. class String { public: String(const char *str = ""); ~String(void ...
- 一个简单实现的string类
为了复习c++知识,简单的实现一个string类,类名为CMyString 环境说明:windows 7 64位 和 CentOS Linux release 7.6.1810 (Core) 开发工具 ...
- (原)String类两种实例化的区别
String有两种实例化方式,一种是通过直接赋值的方式,另外一种是使用标准的new调用构造方法完成实例化. public class StringDemo { public static void m ...
- C++学习36 string类和字符串
C++大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的数据类型 string.string 类处理起字符串来会方便很多,完全可以代替C语言中的 char 数组或 char 指针. ...
- C++面试中string类的一种正确写法
C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源.具体来说: 能像 int 类型那样定义变量,并且支持赋值. ...
- 反射消除String类对象的不可变特性
大家都知道,在JAVA中字符串一旦声明就不可改变,如果尝试修改字符串的内容,将会重新实例化一个新的字符串对象,这也是为了安全性和效率. 由于字符串在程序之中被大量使用,所以JAVA引入了一个字符串常量 ...
随机推荐
- linux系统安全审计简单设置
应用安全-安全审计日志目录 /var/log/audit/audit.log [root@localhost audit]# cd /etc/audit/[root@localhost audit] ...
- 最实用的深度学习教程 Practical Deep Learning For Coders (Kaggle 冠军 Jeremy Howard 亲授)
Jeremy Howard 在业界可谓大名鼎鼎.他是大数据竞赛平台 Kaggle 的前主席和首席科学家.他本人还是 Kaggle 的冠军选手.他是美国奇点大学(Singularity Universi ...
- Java关于struts2框架
今天研究了一下struts2框架,我不太喜欢理论的东西,我研究框架更喜欢打断点一步步跟着去看实现的过程.
- delphi 通过事务插入数据
orsn1.StartTransaction; try qry1.Sql.Clear; qry1.Sql.Text:=' select * from log '; qry1.Open; qry1.In ...
- Java之Array(数组)说明
代码说明: package array; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** ...
- python之hasattr、getattr和setattr函数
hasattr函数使用方法 # hasattr函数使用方法 # hasattr(object,attr) # 判断一个对象里是否有某个属性或方法,返回布尔值,有为True,否则False class ...
- codeforces 777C
C.Alyona and Spreadsheet During the lesson small girl Alyona works with one famous spreadsheet compu ...
- MT【27】对数方程组求范围
解答:3 评论:此类题目通性通法为换元后化归为线性规划问题.当然不等式凑配也是常见技巧,只是容易范围扩大或者缩小.
- 【HDU 1021】Fibonacci Again(找规律)
BUPT2017 wintertraining(16) #5 A HDU - 1021 题意 There are another kind of Fibonacci numbers: F(0) = 7 ...
- LOJ #2541. 「PKUWC 2018」猎人杀(容斥 , 期望dp , NTT优化)
题意 LOJ #2541. 「PKUWC 2018」猎人杀 题解 一道及其巧妙的题 , 参考了一下这位大佬的博客 ... 令 \(\displaystyle A = \sum_{i=1}^{n} w_ ...