Hỏi hướng đối tượng

Hiện là e chỉ ms học class chưa lâu.
Lỗi là khi xuất ra thì sau khi thực hiện phép gán(assig) thì nó bị lỗi giá trị s2.ko hiểu vì sao nữa.rồi khi gõ đễ thoát thì thêm lỗi debug assertion failed
đoạn header.h:

#include <stdio.h>

#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;

class bigint
{
public:
	bigint();
	bigint(long);
	bigint(char*);
	
	~bigint();
	void Printf();
	void assi(bigint);
	
private:
	char *s;
};

bigint::bigint()
{
	this->s = new char [256];
	s="0";
}
bigint::bigint(long n)
{
	this->s =new char [256];
	itoa(n,this->s,10);
}
bigint::bigint(char *str)
{
	this->s =new char [256];
	strcpy(this->s,str);
}

bigint::~bigint()
{
	delete[] this->s;
}
void bigint::Printf(){
	puts(this->s);
}
void bigint::assi(bigint s2){
	this->s[0]='\0';
	strcat(this->s,s2.s);
}


đoạn source

#include "Header.h"

int main()
{
	bigint s1(12324),	s2("2342425");
	s1.Printf();
	s2.Printf();
	s1.assi(s2);
	s1.Printf();
	s2.Printf();
	system("pause");
}


Ko hiểu là hàm strcat vs strcpy nó hoạt động như thế nào chứ đây là hàm thường thấy mà ai cũng chạy dc đây:

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <time.h>
using namespace std;

class sinhvien
{
public:
	sinhvien();
	sinhvien(int);
	~sinhvien();
	void ass(sinhvien);
	void Print();

private:
	int i;
};

sinhvien::sinhvien()
{
	this->i=0;
}
sinhvien::sinhvien(int n)
{
	this->i=n;
}
sinhvien::~sinhvien()
{
	
}
void sinhvien::ass(sinhvien s2){
	this->i=s2.i;

}
void sinhvien::Print(){
	cout<<i<<"  ";
}

int main()
{
	sinhvien s1,s2(1000);
	s1.Print();
	s2.Print();
	s1.ass(s2);
	s1.Print();
	s2.Print();
	system("pause");


}

e đã dùng thử với kiểu string thì chạy ok.chả bị gì cả.

Cậu thử chữa xem thử: char * strcat ( char * destination, const char * source );

[QUOTE=tara95;274930]Cậu thử chữa xem thử: char * strcat ( char * destination, const char * source );[/QUOTE]
mình tham khảo trên cplusplus và msdn rồi.bó tay cả

[QUOTE=13520797;274951]mình tham khảo trên cplusplus và msdn rồi.bó tay cả[/QUOTE]
Do ở đây đối tượng bigint có thành phần là con trỏ (char *s) nên khi truyền vào đối thì nên truyền trực tiếp bằng tham chiếu. Để đảm bảo giá trị của đối tượng bigint không đổi khi kết thúc hàm thì nên thêm const: void assi(const bigint&)

[QUOTE=tara95;274956]Do ở đây đối tượng bigint có thành phần là con trỏ (char *s) nên khi truyền vào đối thì nên truyền trực tiếp bằng tham chiếu. Để đảm bảo giá trị của đối tượng bigint không đổi khi kết thúc hàm thì nên thêm const: void assi(const bigint&)[/QUOTE]
thank!ko biết bạn có học trường uit ko?có vẻ bạn cũng biết nhiều vấn đề hay.cho mình xin email có gì cùng trao đổi cho tiện