Offer_1
#include <iostream>
#include <cstring>
using namespace std; class CMyString
{
public:
CMyString(char *m_pData=NULL);
CMyString(const CMyString& str);
~CMyString(void); CMyString& operator=(const CMyString& str); void print();
private:
char *m_pData;
}; CMyString::CMyString(char *m_pData)
{
if(m_pData!=NULL)
{
this->m_pData = new char[strlen(m_pData)+1];
strcpy(this->m_pData, m_pData);
}else{
this->m_pData = NULL;
}
} CMyString::CMyString(const CMyString& str)
{
new (this) CMyString(str.m_pData);
//this->m_pData = new char[strlen(str.m_pData)+1];
//strcpy(this->m_pData, str.m_pData);
} CMyString::~CMyString()
{
if(m_pData!=NULL)
{
delete [] m_pData;
m_pData = NULL;
}
} CMyString& CMyString::operator=(const CMyString& str)
{
if(this!=&str)
{
CMyString strTemp(str);
char * pTemp = strTemp.m_pData;
strTemp.m_pData = m_pData;
m_pData = pTemp;
}
return *this;
} void CMyString::print()
{
if(m_pData!=NULL)
cout<<m_pData<<endl;
} int main()
{
CMyString str("I'm xxxx.");
str.print();
CMyString cpy1 = str;
cpy1.print();
CMyString cpy2 = "hello World";
cpy2.print();
CMyString cpy3;
cpy3 = str;
cpy3.print();
CMyString cpy4, cpy5;
cpy4 = cpy5;
cpy4.print();
CMyString cpy6(cpy5);
return 0;
}
Offer_1的更多相关文章
- 剑指offer_1.24_Day_4
构建乘积数组 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] ...
- 剑指offer_1.19_Day_3
替换空格 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. Javascript_V8 f ...
- 剑指offer_1.18_Day_2
怠惰怠惰,好好练练了要 二维数组中查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个 ...
- Tagging Physical Resources in a Cloud Computing Environment
A cloud system may create physical resource tags to store relationships between cloud computing offe ...
随机推荐
- [C#]窗体切换--避免开启多个线程
先说说这个多窗体的界面的解决的办法: 用到的方法很简单,就是程序运行就建立一个MainForm,在这个MainForm中设立一个Panel,同时设立几个按钮,按下每个按钮都在这个Panel中载入不同的 ...
- Laravel 5.1 ACL权限控制 一
请自行添加命名空间,代码下载地址 https://github.com/caoxt/learngit 1.所需要用到的数据表 users(用户表).roles(角色表).role_user(用户角色对 ...
- [LeetCode]题解(python):011-Container With Most Water
题目来源: https://leetcode.com/problems/container-with-most-water/ 题意分析: 给出一个n长度的非0数组,a1,a2,……,an,ai代表在坐 ...
- java.util.concurrent BlockingQueue
BlockingQueue 它实现了Queue接口.它是A BlockingQueue with one thread putting into it, and another thread taki ...
- 循环结构中break、continue、return和exit的区别
1. break break语句的使用场合主要是switch语句和循环结构.在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句.如果在多重嵌套循 ...
- android:background="@drawable/home_tab_bg"
android:background="@drawable/home_tab_bg" home_tab_bg/xml: <bitmap xmlns:android=" ...
- ThinkPHP 3.1.2 模板中的基本语法<2>
本节课大纲: 一.导入CSS和JS文件 1.css link js scr <link rel='stylesheet' type='text/css' href='__PUBLIC__/Css ...
- Linux android studio :'tools.jar' seems to be not in Android Studio classpath.
问题: 'tools.jar' seems to be not in Android Studio classpath.Please ensure JAVA_HOME points to JDK ra ...
- HDU_1003Max Sum 简单动归
以前做过这道题目,那是还不懂状态方程.乱搞一气: #include<cstdio> #include<algorithm> using namespace std; +; in ...
- spring-mvc关键点掌握 high level
在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...