【4】实现一个简单的String类

题目:给定一个String类的类声明,要求实现类的函数体

类声明如下

class String{
public:
	String(const char *str = NULL);
	String(const String &another);
	~String(void);
	String& operator=(const String &rhs);
	char* Get(void)const;
private:
	char *m_data;
};

类的实现如下

//实现简单的String类
class String{
public:
	String(const char *str = NULL);
	String(const String &another);
	~String(void);
	String& operator=(const String &rhs);
	char* Get(void)const;
private:
	char *m_data;
};

//实现构造函数
String::String(const char *str){
	if(str == NULL){
		this->m_data = new char[1];
		this->m_data[0] = '\0';
	}
	else{
		this->m_data = new char[strlen(str)+1];
		strcpy(this->m_data, str);
	}
}

//实现拷贝构造函数
String::String(const String &another){
	this->m_data = new char[strlen(another.m_data)+1];
	strcpy(this->m_data, another.m_data);
}

//实现析构函数
String::~String(void){
	delete[] this->m_data;
}
//实现操作符=
String& String::operator=(const String &rhs){
	if(this == &rhs){ //如果是相同就不复制
	   return *this;
	}
	delete[] this->m_data;
	this->m_data = new char[strlen(rhs.m_data)+1];
	strcpy(this->m_data, rhs.m_data);
	return *this;
}
//实现Get
char* String::Get(void)const{
	return this->m_data;
};
时间: 2024-10-12 22:52:11

【4】实现一个简单的String类的相关文章

C++中简单的string类的实现详解

String 在C++的学习生涯我中发现String类的功能十分强大,所以我们是很有必要模拟实现它的,况且在面试的时候模拟实现一个String类也是面试官经常会考的,但是因为外界因素的限制我们是不可能模拟的和库里的string一致的(C++库里的string功能更强大),所以今天我们只模拟实现string的基本功能-构造函数,拷贝构造函数,析构函数,赋值运算符重载,运算符+=的重载,运算符[]的重载,c_str(得到一个C风格的字符指针,可操作字符串),Size,Push_Back,Insert

介绍一个简单的JavaScript类框架

  这篇文章主要介绍了一个简单的JavaScript类框架,有助于初学者理解JS类的创建与继承,需要的朋友可以参考下 在写work-in-progress JavaScript book一书时,对于javascript继承体系,我花费了相当的时间,并在该过程中研究了各种不同的模拟经典类继承的方案.这些技术方案中,我最为推崇的是base2与Prototype的实现. 从这些方案中,应该能提炼出一个具有其思想内涵的框架,该框架须具有简单.可重用.易于理解并无依赖等特点,其中简单性与可用性是重点.以下

推荐一个简单的托盘类

有的网友开发了自己的托盘类,实现起来略微烦琐.在这里我向大家推荐一个实现简单而十分有效的托盘类(是我在一本书中学来的). 1.把TrayIcon.cpp和TrayIcon.cpp拷贝到你的项目目录,并添加到项目中. 2.在DemoDlg.h中加入#include "TrayIcon.h" 3.通过类向导向类CDemoDlg添加成员变量CTrayIcon m_CTrayIcon; 4.建立菜单资源,使其ID为:IDR_DEMO,设计菜单: 向demo1和exit添加事件处理程序: voi

介绍一个简单的JavaScript类框架_基础知识

 在写work-in-progress JavaScript book一书时,对于javascript继承体系,我花费了相当的时间,并在该过程中研究了各种不同的模拟经典类继承的方案.这些技术方案中,我最为推崇的是base2与Prototype的实现. 从这些方案中,应该能提炼出一个具有其思想内涵的框架,该框架须具有简单.可重用.易于理解并无依赖等特点,其中简单性与可用性是重点.以下是使用示例:   var Person = Class. extend ( { init: function (is

问一个简单的DBhelper类使用问题

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Configuration;usingSystem.Data.SqlClient;usingSystem.Data;namespaceDAL{publicstaticclassDBHlper{///封装的一个ConnectionprivatestaticSqlConnectionconnection;publicstaticSqlConnec

一个简单php日志类

日志类如下,news目录为当前php文档根目录下子目录. <?phpif( ! defined('BASEPATH') ) {    define ('BASEPATH', $_SERVER['DOCUMENT_ROOT'].'/news/');}require_once BASEPATH.'config/config.inc.php';require_once BASEPATH.'config/constants.php';define ("LOG_PATH", $config

一个简单的javascript类定义例子_js面向对象

复制代码 代码如下: <script> //定义一个javascript类 function JsClass(privateParam/* */,publicParam){//构造函数 var priMember = privateParam; //私有变量 this.pubMember = publicParam; //公共变量 //定义私有方法 function priMethod(){ return "priMethod()"; } //定义特权方法 //特权方法可以

一个PHP的String类代码_php技巧

使用方法: 复制代码 代码如下: $s ='中国'; $os = new String( $s ); echo $os->decode('gbk') ,''; echo $os->decode('gbk')->encode('md5'),''; 代码 复制代码 代码如下: class String extends stdClass { private $_val =''; public function __construct( $str ='' ) { $this->_val =

php编写一个简单的路由类_php技巧

类代码: 复制代码 代码如下: <?php class Router { public function getRouter($types = 1) { if ( isset($_SERVER['PATH_INFO']) ) { $query_string = substr(str_replace(array('.html','.htm', '.asp', '//'), '',$_SERVER['PATH_INFO']),1); } else { $query_string = str_repl