`
xumingrencai
  • 浏览: 1181522 次
文章分类
社区版块
存档分类
最新评论

C++ String面试题

 
阅读更多
#include <iostream>
using namespace std;

class String
{
private:
	char *pc;

public:
	//注意const的使用
	String(const char *pcStr = NULL) //默认参数
	{
		cout<<"construct"<<endl;
		if (NULL != pcStr)
		{
			pc = new char[strlen(pcStr) + 1];
			memcpy(pc, pcStr, strlen(pcStr) + 1);
			
		}
		else /* 出现空指针的情况 */
		{
			pc = new char[1]; 
			pc[0] = '\0';
		}
	}

	~String()
	{
		cout<<"destroy"<<endl;
		if (NULL != pc)
		{
			delete pc;
			pc = NULL;
		}
	}

	String(const String &str)
	{
		cout<<"copy construct"<<endl;
		if (NULL != str.pc)
		{
			pc = new char[strlen(str.pc) + 1];
			memcpy(pc, str.pc, strlen(str.pc) + 1);
		}
	}

	String& operator=(const String& rhs)
	{
		cout<<"======"<<endl;
		if (&rhs == this) /* 防止自己拷贝自己 */
		{
			return *this;
		}
		/* 删除被赋值对象中指针变量的内存空间,防止内存泄露 */
		if (NULL != pc)
		{
			delete pc;
			pc = NULL;
		}

		pc = new char[strlen(rhs.pc) + 1];
		memcpy(pc, rhs.pc, strlen(rhs.pc) + 1);

		return *this;
	}

	void print()
	{
		if (NULL != pc)
		{
			printf("%s\n", pc);
		}
	}
};

int main(int argc, char** argv) 
{ 
	char *s = "hello";

	String str(s);
	str.print();

	String str2;
	str2.print();

	str2 = str;
	str2.print();

	String str3(str2);
	str3.print();

  
  return 0; 
}

分享到:
评论

相关推荐

    c c++ 笔试 面试题 超多超经典

    c c++ 笔试 面试题 超多超经典c c++ 笔试 面试题 超多超经典c c++ 笔试 面试题 超多超经典c c++ 笔试 面试题 超多超经典c c++ 笔试 面试题 超多超经典

    c++基础面试题

    c++面试题 数据库 linux 已知String类定义如下: class String { public:  String(const char *str = NULL); // 通用构造函数  String(const String &another); // 拷贝构造函数  ~String(); // 析构函数  ...

    c、c++面试题集锦.pdf

    c、c++面试题集.pdf,很经典的面试题目!

    c/C++面试题大全--96页

    本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。  许多面试题看似简单,却需要深厚的基本功才能给出...

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    面试题10:编写类String 的构造函数、析构函数和赋值函数 8.4 拷贝构造函数 面试题11:谈谈对拷贝构造函数和赋值运算符的认识 面试题12:写出当定义#define _INMAIN 0和不定义时代码打印结果 第9章 继承与多态 9.1 ...

    c++经典面试题(让找工作更容易)

    C语言,c++的面试题及答案,内容详细,让你面试过关更加容易,找到好工作不再困难

    c与c++面试题汇总(比较全)

    c与c++面试题汇总(比较全) 虽然有点小错误但是不影响阅读,此题仅供参考

    最新名企标准通用C++面试题,

    C++面试题 参考:http://blog.csdn.net/Ghost90/archive/2009/04/22/4099672.aspx 整理:松鼠 时间:2009-5-8 1、const 有什么用途?(请至少说明两种) 答: (1)可以定义 const 常量 (2)const可以修饰函数的...

    c++ 面试题 总结

    C++面试题 1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的。 private 也被集成,只事派生类没有访问权限而已 virtual可加可不加 子类的...

    经典C/C++面试题目大汇总(全附答案).doc

    doc格式,60多页吧,几百道题吧,都有答案吧,看好在下! 部分: 1.求下面函数的返回值(微软) int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } ...

    String类的重写 C++

    重写String类 实现其各个模块的功能。 构造函数 析构函数 常考面试题

    C/C++面试题:编写类String的构造、析构和赋值函数

    本文主要介绍了C/C++面试题:编写类String的构造、析构和赋值函数,解析构造函数、析构函数和赋值函数的编写方法

    JAVA面试题最全集

    1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出...

    C++实现String类实例代码

    这是一道十分经典的面试题,可以短时间内考查学生对C++的掌握是否全面,答案要包括C++类的多数知识,保证编写的String类可以完成赋值、拷贝、定义变量等功能。 #include using namespace std; class String { ...

    C++ 面试题翻译电话号码实例代码

    C++ 面试题翻译电话号码实例代码 例如: 输入:OneTwoThree 输出:123 输入:OneTwoDoubleTwo 输出:1222 输入:1Two2 输出:ERROR 输入:DoubleDoubleTwo 输出:ERROR 有空格,非法字符,两个Double相连,...

    面试题.doc

    一些面试题 还算可以的

    一些C面试题,希望能对大家有帮助

    c面试题 4. static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 7. 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。...

    从string类的实现看C++类的四大函数(面试常见)

    朋友面试的一道面试题,分享给大家,面试官经常会问到的,实现string类的四大基本函数必掌握。 一个C++类一般至少有四大函数,即构造函数、拷贝构造函数、析构函数和赋值函数,一般系统都会默认。但是往往系统默认的...

    最全面Java面试题,从corejava到javaWeb共180多题(含答案)

    最全面Java面试题,从corejava到javaWeb共180题(含答案),后面还有部分c++的。部分试题: 1、面向对象的特征有哪些方面? 【基础】2、作用域public,private,protected,以及不写时的区别?3、String 是最基本的数据...

    Java自学视频教程-JavaSE基础-常用API-03、String类常见面试题.mp4

    Java具有类似于C++语言的“形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。 使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的...

Global site tag (gtag.js) - Google Analytics