C++达到String分类

这是一个非常经典的面试题,能够测试学生很短的时间C++法师是综合,答案应包含C++大多数知识类,保证书String符类可以完成值、抄、的变量和其它函数的定义。

#include<iostream>
using namespace std;

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

String::String(const char *str)
{
    cout<<"构造函数被调用了"<<endl;
    if(str==NULL)//避免出现野指针,如String b;假设没有这句话。就会出现野
                  //指针
   {
        m_data=new char[1];
        *m_data=''/0'';
    }
    else
    {
      int length=strlen(str);
      m_data=new char[length+1];
      strcpy(m_data,str);
    }
}
String::~String(void)
{
    delete m_data;
    cout<<"析构函数被调用了"<<endl;
}

String::String(const String &other)
{
 cout<<"赋值构造函被调用了"<<endl;
 int length=strlen(other.m_data);
 m_data=new char[length+1];
 strcpy(m_data,other.m_data);
}
String &String::operator=(const String &other)
{
      cout<<"赋值函数被调用了"<<endl;
      if(this==&other)//自己拷贝自己就不用拷贝了
                 return *this;
      delete m_data;//删除被赋值对象中指针变量指向的前一个内存空间,避免
                    //内存泄漏
      int length=strlen(other.m_data);//计算长度
      m_data=new char[length+1];//申请空间
      strcpy(m_data,other.m_data);//拷贝
      return *this;
}
void main()
{
      String b;//调用构造函数
      String a("Hello");//调用构造函数
      String c("World");//调用构造函数
      String d=a;//调用赋值构造函数。由于是在d对象建立的过程中用a来初始化
      d=c;//重载的赋值函数调用后,
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-12-08 00:22:07

C++达到String分类的相关文章

java String分类trim,substring,replaceAll,indexOf使用功能

1.trim性能 特征去掉字符串首尾空格,防止不必要的空格导致错误. public class TrimTest { public static void main(String[] args) { String str1=" cjc"; String str2=" c jc "; System.out.println(str1.length()); System.out.println(str1.trim().length()); System.out.print

20170622xlVBA多部门分类汇总同类合并单元格

Public Sub Basic_CodeFrame() AppSettings On Error GoTo ErrHandler Dim StartTime, UsedTime As Variant StartTime = VBA.Timer 'Input code here Call SubTotalData UsedTime = VBA.Timer - StartTime 'Debug.Print "UsedTime:" & Format(UsedTime, "

20170617xlVBA销售数据分类汇总

Public Sub SubtotalData() AppSettings 'On Error GoTo ErrHandler Dim StartTime, UsedTime As Variant StartTime = VBA.Timer 'Input code here Dim Wb As Workbook Dim Sht As Worksheet Dim oSht As Worksheet Dim Rng As Range Dim Arr As Variant Const HEAD_ROW

第十一篇、FMDB使用

简介: FMDB是基于SQlite3的封装一个第三方的OC库,操作起来更加简单,性能比Coredata更加高. 1.使用示例: class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObje

oneThink公共方法

1. 常用公共方法 1 <?php 2 // +---------------------------------------------------------------------- 3 // | OneThink [ WE CAN DO IT JUST THINK IT ] 4 // +---------------------------------------------------------------------- 5 // | Copyright (c) 2013 http:

通用访问 - 用“反射”来设计通用的通信协议

1. 效果演示 2. 通信协议 功能介绍 特点 TCP协议 WebApi协议 3. SDK与工具 4. 应用示例 迷你网管 通用GIS 系统管理 5. 设计初衷与演化 1. 效果演示 服务端代码 //创建服务器 var __服务端 = FT通用访问工厂.创建服务端(); __服务端.端口 = 8888; __服务端.开启(); //实际对象 var __基本状态 = new M基本状态(); __基本状态.版本 = "1.0.0.0"; __基本状态.待处理问题.Add(new M问题

xaml中绑定单例属性

在项目中经常会遇到,同一个字典表绑定到多个ItemsControl上的情况,可以在单例中创建一个List,xaml上绑定即可.看代码: 1,XAML 1 <Grid> 2 <StackPanel Orientation="Horizontal" 3 VerticalAlignment="Center"> 4 <TextBlock Text="分类" /> 5 <ComboBox ItemsSource=&

H3 BPM接口说明文档

H3 BPM接口说明文档 二〇一七年四月 目 录 1 引擎接口唯一入口:OThinker.H3.IEngine 3 1.1 构造Engine对象 3 1.2 属性 4 2 类:OThinker.H3.Acl.IBizRuleAclManager 6 3 类:OThinker.H3.Acl.IFunctionAclManager 8 4 类:OThinker.H3.Acl.ISystemOrgAclManager 12 5 类:OThinker.H3.Acl.ISystemAclManager 1

教你如何拔取百度地图POI兴趣点

教你如何拔取百度地图POI兴趣点 通过聚合数据提供的接口,获取百度地图的POI兴趣点,并存储至数据库中. 实现: 1.聚合数据百度POI接口说明 调用聚合数据,首先得注册聚合.聚合数据提供的百度地图POI的接口有三个:数据分类,查询数据和获取周边数据.想要获取百度POI兴趣点,涉及到的接口为数据分类,查询数据. a.数据分类 接口地址:http://apis.juhe.cn/baidu/getCategory 支持格式:JSON/XML 请求方式:GET 请求示例:http://apis.juh