Mình đang Code bài tập về lớp chuỗi kí tự String. Debug bị lỗi fail assertion, trong khi mình Check lại không hề thấy lỗi, nhưng chạy lại lỗi. Mình kiểm tra hoài vẫn không thấy sai chỗ nào. Ngồi Check cả buổi rồi mình xóa hàm ~String luôn thì lại chạy bình thường.:shock:
Vấn đề là mình muốn giữ hàm ~String thì phải làm cách nào. Các bạn xem giùm Code của mình có lỗi chỗ nào thì giúp mình hen.:go:
Code :
* File Header: STRING.h
#pragma once
#include "string.h"
#include "iostream"
using namespace std;
class STRING
{
private:
char *Content;
int Lenght;
public:
STRING();
STRING(char* s);
STRING operator=(const STRING& p);
~STRING();
friend STRING operator+(const STRING& p,const STRING& q);
void Xuat();
};
*File Cpp: STRING.cpp
#include "STRING.h"
#include "string.h"
#include "iostream"
using namespace std;
STRING::STRING()
{
Content=NULL;
Lenght=0;
}
STRING::STRING(char* s)
{
Lenght=strlen(s);
Content=new char [Lenght+1];
strcpy(Content,s);
}
STRING STRING:perator=(const STRING& p)
{
delete []Content;
Lenght=strlen(p.Content);
Content=new char [Lenght+1];
strcpy(Content,p.Content);
return *this;
}
STRING::~STRING()
{
delete []Content;
Lenght=0;
}
STRING operator+(const STRING& p,const STRING& q)
{
STRING t;
t.Lenght=p.Lenght+q.Lenght;
t.Content=new char [t.Lenght+1];
strcpy(t.Content,p.Content);
strcat(t.Content,q.Content);
return t;
}
void STRING::Xuat()
{
cout<<Content<<"\n";
}
*File Cpp chứa hàm Main:
#include "STRING.h"
#include "string.h"
#include "iostream"
using namespace std;
void main()
{
STRING x,y("DH CNTT"),z="DHQG";
y.Xuat();
z.Xuat();
x=y+z;
x.Xuat();
}
Vấn đề là mình muốn giữ hàm ~String thì phải làm cách nào. Các bạn xem giùm Code của mình có lỗi chỗ nào thì giúp mình hen.:go:
Code :
* File Header: STRING.h
#pragma once
#include "string.h"
#include "iostream"
using namespace std;
class STRING
{
private:
char *Content;
int Lenght;
public:
STRING();
STRING(char* s);
STRING operator=(const STRING& p);
~STRING();
friend STRING operator+(const STRING& p,const STRING& q);
void Xuat();
};
*File Cpp: STRING.cpp
#include "STRING.h"
#include "string.h"
#include "iostream"
using namespace std;
STRING::STRING()
{
Content=NULL;
Lenght=0;
}
STRING::STRING(char* s)
{
Lenght=strlen(s);
Content=new char [Lenght+1];
strcpy(Content,s);
}
STRING STRING:perator=(const STRING& p)
{
delete []Content;
Lenght=strlen(p.Content);
Content=new char [Lenght+1];
strcpy(Content,p.Content);
return *this;
}
STRING::~STRING()
{
delete []Content;
Lenght=0;
}
STRING operator+(const STRING& p,const STRING& q)
{
STRING t;
t.Lenght=p.Lenght+q.Lenght;
t.Content=new char [t.Lenght+1];
strcpy(t.Content,p.Content);
strcat(t.Content,q.Content);
return t;
}
void STRING::Xuat()
{
cout<<Content<<"\n";
}
*File Cpp chứa hàm Main:
#include "STRING.h"
#include "string.h"
#include "iostream"
using namespace std;
void main()
{
STRING x,y("DH CNTT"),z="DHQG";
y.Xuat();
z.Xuat();
x=y+z;
x.Xuat();
}
Comment