代入演算子とコピー・コンストラクタを明示的に定義する

#include <iostream.h>
#include <string.h>

class CBook
{
	char* ptitle;
	int price;
public:
	CBook(const CBook&);
	CBook(const char* , int);
	~CBook(){delete[] ptitle;}
	const char* get_title(){return ptitle;}
	CBook& operator=(const CBook&);
};

CBook& CBook::operator=(const CBook& rhs)
{
	if(&rhs != this){
		delete[]ptitle;
		ptitle = new char[strlen(rhs.ptitle) + 1];
		strcpy(ptitle, rhs.ptitle);
	}
	return *this;
}

CBook::CBook(const char* ptitle_, int price_)
: price(price_)
{
	ptitle = new char[strlen(ptitle_) + 1];
	strcpy(ptitle, ptitle_);
}

CBook::CBook(const CBook& book)
:price(book.price)
{
	ptitle = new char[strlen(book.ptitle) + 1];
	strcpy(ptitle, book.ptitle);
}

int main()
{
	CBook book1("Sleeping Beauty", 980);
	CBook book2("Jungle Book", 780);
	
	cout << "book1の書名:";
	cout << book1.get_title() << '\n';
	
	cout << "book1にbook2の内容をコピーします\n";
	book1 = book2;
	
	cout << "book1の書名:";
	cout << book1.get_title() << '\n';
	return 0;
}