c++构造函数析构函数

来源:百度知道 编辑:UC知道 时间:2024/05/14 20:07:03
我们老师出的题目~~~那真郁闷~~~
请那位高手帮我解决下~~我会追加分的~~谢谢了~~~

题目:构造一个字符串类CString,该类有以下几个私有数据成员:
int *ptr;//指向字符串的首地址
int length;
字符串不能以'/0'作为结束符,而由length指定长度,要求实现以下操作:
1.缺省构造函数
2.拷贝构造函数
3.析构函数
4.求字符串的长度
5.把所以字符都变成小写
6.取字符串前面的n个字符
7.重载运算符:比较两个字符是否相等(==),取字符串中的某个字符([ ]),输入输出(>>,<<),赋值运算符(=),两个字符对象合并(+)...

谢谢了

#include "stdafx.h"
#include <iostream.h>
#include <conio.h>
#include <string.h>
#define MAXLENGTH 256
class CString
{
protected:
char *ptr;
int length;
public:
CString() {ptr=NULL; length=0;}
CString(const char *str)
{
length=strlen(str);
if (length==0) {ptr=NULL; return;}
ptr=new char [length];
memcpy(ptr,str,length);
}
CString(const CString &r)
{
length=r.length;
if (ptr!=NULL) delete []ptr; ptr=NULL;
if (r.ptr==NULL) return;
ptr=new char[length];
memcpy(ptr,r.ptr,length);
}
~CString() {if (ptr!=NULL) delete []ptr; }
int GetLength() const{ if (ptr==NULL) return 0; return length;}
void Lowercase()
{
if (ptr==NULL) return;
char *tmp=ptr;
for (int i=0;i<length;i++)
{
char c=*tmp;
if (c>=&