用String类的实验,说明拷贝构造函数、重载等号赋值函数、和普通构造函数的区别
来源:互联网 发布:财达证券交易软件 编辑:程序博客网 时间:2024/05/09 17:27
用String类的实验,说明拷贝构造函数、重载等号赋值函数、和普通构造函数的区别
看程序员面试宝典,对其中的一个问题很感兴趣。就是编写一个String的构造函数、析构函数和赋值函数。这个问题虽然很简单,但是这些简单的问题中,包含了许多我们需要了解的基础知识。我的答案如下
//String.h
#define NULL 0
class String
{
public:
String(constchar *str = NULL);
String(constString &other);
~String(void);
String operator=(const String &other);
intGetLength();
private:
char*m_data;
};
这里要注意运算符等号的重载GetLength()函数是编写,用来测试我String类的是否正确。
以上函数声明包含了String类的一些必备操作功能。
最为简单的拷贝构造函数
String(const String &other);
普通构造函数
String(const char *str =NULL);
重载等号赋值函数
Stringoperator =(constString &other);
具体函数源文件如下:
//String.cpp
#include <iostream>
using namespace std;
#include "String.h"
String::~String()
{
if(NULL!= m_data)
{
delete[] m_data;
}
}
String::String(const char *str)
{
if(NULL== str)
{
/*m_data= new char[1];
*m_data ='\0';*/
m_data= NULL;
}
else
{
intlength = strlen(str);
m_data = new char[length+1];
strcpy(m_data,str);
}
}
String::String(const String &other)
{
intlength = strlen(other.m_data);
m_data = new char[length+1];
strcpy(m_data,other.m_data);
}
String String::operator =(constString &other)
{
if(this == &other)
return*this;
delete[] m_data;
intlength = strlen(other.m_data);
m_data = new char[length+1];
strcpy(m_data,other.m_data);
return*this;
}
int String::GetLength()
{
if(NULL== m_data)
{
return0;
}
else
{
intlength = strlen(m_data);
returnlength+1;
}
}
测试用的main函数,打上断点即可看到类是否正确。
//main.cpp
#include "String.h"
void main(void)
{
String String1("J");
intlength=String1.GetLength();
String String2;
length=String2.GetLength();
String2 = String1;
length=String2.GetLength();
// String S
}
- 用String类的实验,说明拷贝构造函数、重载等号赋值函数、和普通构造函数的区别
- 写String类的普通构造函数,析构函数,拷贝构造函数和赋值函数
- 编写String类的普通构造函数、拷贝构造函数、析构函数、赋值函数
- string类的构造函数,析构函数,拷贝构造函数和赋值构造函数
- String类的构造函数、析构函数、拷贝构造函数、赋值运算符重载
- 类String的普通构造、拷贝构造函数与赋值函数
- String 的普通构造函数、拷贝构造函数、析构函数、赋值函数
- 拷贝构造函数和赋值构造函数的区别
- 拷贝构造函数和赋值构造函数的区别
- 赋值构造函数和拷贝构造函数的区别
- 赋值构造函数和拷贝构造函数的区别
- 拷贝构造函数和赋值构造函数的区别
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- String类的构造函数,析构函数,拷贝构造函数和赋值函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- 编写类String的构造函数、拷贝构造函数、析构函数和赋值函数
- string类的构造函数、析构函数、拷贝构造函数和赋值函数
- 编写类String 的构造函数、拷贝构造函数、析构函数和赋值函数
- 学习笔记-轻量级Java EE:jsp的指令、动作、内置对象
- Informix Cannot write sorted rows
- PHP琐碎事项
- jqgrid学习笔记
- 文件导入导出的测试技巧
- 用String类的实验,说明拷贝构造函数、重载等号赋值函数、和普通构造函数的区别
- (转)可以让你上奋斗10年的工作经验
- 项目总结之材料院纤维拉伸仪项目
- 软件工程试验报告二
- JVM javacore 和 heapdump 文件生成选项
- C++中const在函数名前面和函数后面的区别
- struts2第二次提交页面提示no result defined for action
- Firebird数据库及工具
- TitaniumStudio学习笔记之开篇