1. 程式人生 > >C++面試中經常會讓手寫String類的實現

C++面試中經常會讓手寫String類的實現

主要是完成String類的建構函式、拷貝建構函式、賦值建構函式和解構函式。這個類中包括了指標類成員變數m_data,當類中包括指標類成員變數時,一定要過載建構函式、賦值函式、解構函式;

下面是具體的實現:

class String
{
public:
	String(const char* str=NULL);//普通的建構函式
	String(const String& other); //拷貝建構函式
	~String();
	String& operate = (const String& other);//複製構造
private:
	char* m_data;//用於儲存字串
};

String::String(const char* str)
{
	if (str==NULL)
	{
		m_data = new char[1];
		*m_data = '\0';
	}
	else
	{
		int len = strlen(str);
		m_data = new char[len+1];
		strcpy(m_data, str);
	}
}

String::~String()
{
	if (m_data!=NULL)
	{
		delete[] m_data;
		m_data = NULL;
	}
}

String::String(const String & other)
{
	int len = strlen(other.m_data);
	m_data = new char[len + 1];
	strcpy(m_data, other.m_data);
}

String& String::operate = (const String & other)
{
	if (this==other)
	{
		return *this;
	}
	delete[] m_data;
	int len = strlen(other.m_data);
	m_data = new char[len + 1];
	strcpy(m_data, other.m_data);
	return *this;
}


相關推薦

C++面試經常String實現

主要是完成String類的建構函式、拷貝建構函式、賦值建構函式和解構函式。這個類中包括了指標類成員變數m_data,當類中包括指標類成員變數時,一定要過載建構函式、賦值函式、解構函式; 下面是具體的實

面試經常問的智力題,來看看你做幾道

轉載自   面試中經常會問的智力題,來看看你會做幾道 下面是大部分題目來自滴滴出行2017秋招題。開始頭腦風暴吧~~~ 問題 question one 有50家人家,每家一條狗。有一天警察通知,50條狗當中有病狗,行為和正常狗不一樣。每人只能通過觀察

前端面試經常遇到的幾個問題

在前端很少有機會接觸到演算法,大多都互動性的操作,然而從各大公司面試來看,演算法依舊是考察的一方面。下面這篇文章就給大家總結了在前端JS面試中常見的測試題問題,有需要的朋友們可以參考借鑑,下面來一起看看吧。 前言 學習資料結構與演算法對於工程師去理解和分析問題都是有幫助的。如果將來當我們面對較為

java面試經常被到分散式面試題

1、Dubbo的底層實現原理和機制 –高效能和透明化的RPC遠端服務呼叫方案 –SOA服務治理方案 Dubbo預設協議採用單一長連線和NIO非同步通訊, 適合於小資料量大併發的服務呼叫,以及服務消費者機器數遠大於服務提供者機器數的情況 2、描述一個服務從釋出到被消費的詳細過程 務。首先先獲取zk的

java面試經常被到分布式面試題

如果 如何實現 編程 tcc exists 冪等性 mil 限制 fast 1、Dubbo的底層實現原理和機制 –高性能和透明化的RPC遠程服務調用方案 –SOA服務治理方案 Dubbo缺省協議采用單一長連接和NIO異步通訊, 適合於小數據量大並發的服務調用,以及服務消費者

總結五個面試經常遇到的FPGA基本概念

1、什麼是Setup 和Holdup時間? 答:Setup/hold time 是測試晶片對輸入訊號和時鐘訊號之間的時間要求。 建立時間是指觸發器的時鐘訊號上升沿到來以前,資料穩定不變的時間。輸入訊號應提前時鐘上升沿(如上升沿有效)T時間到達晶片,這個T就是建立時間-Setup ti

javascriptthis的理解整理----面試經常問道關於this的理解

在javascript中this的指向確實也是困擾我之久,每每遇到這種面試題,都不想思考,好吧~~~決定好好整理一下. this的指向只有在函式呼叫的時候才可以確定到底指向誰(在函式的定義的時候是沒有辦法確認的),實際上的this會指向呼叫它的物件. 通常在瀏

web前端總結面試問題<經常遇到的程式碼 - - >(二)

氣泡排序 var arr = [5,8,3,6,9] for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ v

HTML常用的特殊符號總結 2014年9月12日 22704次瀏覽 html經常用到一些特殊符號,例如箭頭,雪花,心形等等,這些符號就不用css樣式或者圖片來了,直接用html特殊符號可以實現

html中經常會用到一些特殊符號,例如箭頭,雪花,心形等等,這些符號就不用css樣式或者圖片來寫了,直接用html特殊符號可以實現。 例如,如下html程式碼: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://w

pythonlogging重復日誌的問題分析

python自動化測試 logging日誌 小強測試品牌 測試幫日記 點擊鏈接加入QQ群 522720170(免費公開課、視頻應有盡有):https://jq.qq.com/?_wv=1027&k=5C08ATe現象小強python全棧自動化測試班的學員問到,會出現重復寫日誌的情況,如

面試經常被問到的 3 個問題

本地 描述 邏輯 例子 換工作 繼續 腳本 比較 .com 前幾天,我在《簡歷中打動人的 3 個關鍵點》和《簡歷中千萬不要出現的 3 個問題》中講了一些寫簡歷的註意事項,今天想聊聊在面試過程中,如何更好的體現出自己的真實實力。 面試時,我經常會拿下面 3 個問題開場: 1

談談JAVA工程獅面試經常遇到的面試題目------什麼是MVC設計模式

轉載來源:https://www.cnblogs.com/selene/p/4506962.html  作為一名java工程獅,大家肯定經歷過很多面試,但每次幾乎都會被問到什麼是MVC設計模式,你是怎麼理解MVC的類似這樣的一系列關於MVC的問題。 【出現頻率】 【關鍵考點】

一些Java面試經常出現的演算法題

1.現在輸入n個數字,以逗號,分開;然後可選擇升或者降序排序   本題的splitStringByComma(String )方法純屬多餘,可以用String的split方法一句話代替,且可讀性也更強,下面的一段話源自JDK1.6API,StringTokenizer類已不再提倡

Java面試經常遇到的執行順序

單類執行順序: 下面是我寫的一個demo: package com.bw; /** * @author brickworker * 關於類Color的描述:測試單個類的執行順序問題 */ public classColor {     //建構函式     public

【原創】面試肯定被問到的 2 個問題

之前我分別用三篇文章對簡歷和麵試注意事項做了說明: 《簡歷中千萬不要出現的 3 個問題》 《簡歷中打動人的 3 個關鍵點》 《面試時經常會被問到的 3 個問題》 今天是這個系列的第四篇,我們繼續聊面試,這次的兩個問題是: 為什麼離職? 本次想找一個什麼樣的工作

面試經常遇到的SQL語句

1. 建表寫入資料 。。。已經打包好了看這裡:等更新 2. 開始練習 查詢“001”課程比“002”課程成績高的所有學生的學號; SELECT a.Sno FROM ( SELECT Sno, score FROM score WHERE Cno =

C# using經常出現的XXX=XXXX是這個

REVIT的API中,有的名稱空間有個Form和Windows中的Form名稱是重合的,這樣的情況,有兩種做法: 1.使用的時候,Windows.Form   和 Autodesk.Revit.UI.Form來進行區分,即使用完整的名稱; 2.在using中,進行重新命名

網際網路公司面試經常被問的問題

機器學習 1.(騰訊)SVM的原理是什麼? 參考答案: 支援向量機(SVM)第一種二類分類模型,它的基本模型是定義在特徵空間上的間隔最大的線性分類器,間隔最大使它有別於感知機;支援向量機還包括核技巧,這使它成為實質上的非線性分類器。硬幾何最大化解決線性可分

面試測試崗位常常要求的程式碼系列【一】

import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Sort { public

c++sort函式排序自己

定義排序函式:方法1:宣告外部比較函式bool Less(const Student& s1, const Student& s2) { return s1.name < s2.name; //從小到大排序 } std::sort(sutVe