C++:【常见面试题】String类的写法

原创 2016年05月30日 17:16:36
#include<iostream>
#include<stdlib.h>
using namespace std;

class String
{
public:
    String(const char* str)
        :_str(new char[strlen(str) + 1])  //  \0
    {
        strcpy(_str, str);
    }

    String(const String& s) 
        :_str(NULL)   //若不赋空则为随机值,随机值_str析构函数释放指针会崩溃
    {
        String tmp(s._str);     //重新开辟空间
        swap(_str, tmp._str);
    }

    //String& operator = (const String& s)
    //{
    //    if (this != &s) //不是自己给自己赋值
    //    {
    //        String tmp(s._str);   //重新开辟空间
    //        swap(_str, tmp._str);
    //    }
    //    return *this;
    //}
    String& operator = (String s)
    {
        swap(_str, s._str);
        return *this;
    }

    ~String()
    {
        if (_str)
        {
            delete[] _str;    //注意与new char[n]匹配
        }
    }

    char* CStr()
    {
        return _str;
    }

    char& operator[](size_t index)  //重载输出单个字符
    {
        return _str[index];
    }

private:
    char* _str;
};

void Test2()
{
    String s("change world");
    cout << s[1] << endl;

    s[1] = 'x';
    cout << s.CStr() << endl;
}

int main()
{
    Test2();
    system("pause");
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

String常见面试题——(一)

1、一个中文汉字能保存在一个char里吗? byte呢?请看下面的例子: public class ChineseTest { public static void main(String...

java中常见面试题String,StringBuffer,StringBulider 的区别及相应的使用方法介绍

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String 对...

Java String常见面试题汇总

String类型的面试题 1.       String是最基本的数据类型吗? 基本数据类型包括byte,int,char,long,float,double,boolean,sh...

C++常见面试题30道

1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new...

c++常见面试题30道

转自:http://blog.csdn.net/shihui512/article/details/9092439; 1.new、delete、malloc、free关系 delete...

C/C++程序员应聘常见面试题深入剖析

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

C/C++程序员应聘常见面试题深入剖析(3)

原文链接:http://dev.yesky.com/471/2306471_3.shtml 试题5:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi...

C/C++程序员应聘常见面试题深入剖析(2)

原文链接:http://dev.yesky.com/471/2306471_2.shtml    3.内功题   试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 i...

C++常见面试题—内存管理GetMemory()

Getmemory的几个经典的关于内存的笔试题: void GetMemory( char *p ) {   p = (char *) malloc( 100 ); } void Test( v...

c++常见面试题30道

转自:http://blog.csdn.net/shihui512/article/details/9092439; 1.new、delete、malloc、free关系 delete会调用对...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)