Problem Description
Please design a class Cat, which contains the following public member variables and functions:
请设计类 Cat, 它包含下面的公有成员变量和函数:
char * name
Cat(const char * name)
Cat(const Cat & cat)
Cat & operator = (const Cat & cat)
const char * get_name() const
~Cat()
Requirement: member variable name stores a dynamically allocated array of characters.
要求: 成员变量 name 存储的是一个动态分配的字符数组.
EXAMPLE INPUT
GHJOPIXM
ZLMCUOYRWJEHDQ
EXAMPLE OUTPUT
1
1
This is my cat: GHJOPIXM
1
1
This is my cat: ZLMCUOYRWJEHDQ
主程序(C/C++)
#include <iostream>
using namespace std;
#include "source.cpp"
void print_cat(const Cat& cat) {
cout << "This is my cat: ";
const char * name = cat.get_name();
cout << name << endl;
}
int main() {
string name, name2;
cin >> name >> name2;
Cat cat(name.c_str());
Cat cat2(name2.c_str());
cout << (cat.name == cat.get_name()) << endl;
cout << (cat.name != name.c_str()) << endl;
print_cat(cat);
cat = cat2;
cout << (cat.name == cat.get_name()) << endl;
cout << (cat.name != cat2.name) << endl;
print_cat(cat);
}
答案
#include <cstring>
class Cat
{
void _copy(const char * n) {
name = new char[strlen(n)+1];
strcpy(name, n);
}
public:
char * name;
Cat(const char * n) {
_copy(n);
}
Cat(const Cat & cat) {
_copy(cat.name);
}
~Cat() {
delete [] name;
}
Cat & operator = (const Cat & cat) {
delete [] name;
_copy(cat.name);
return *this;
}
const char* get_name() const {
return name;
}
};
随机测试文本产生程序 (C)
#include "stdio.h"
int main() {
printf("GHJOPIXM\n\
ZLMCUOYRWJEHDQ");
}
#include
class Cat{
public:
char * name;
int size ;
Cat(){
size = 0 ;
}
void Stcrpy(const char *n ){
this->size = strlen(n) + 1 ;
this->name = new char[size];
for (int i = 0; i < size ; ++ i){
name[i] = n[i] ;
}
}
Cat(const char * n ){
Stcrpy(n) ;
}
Cat(const Cat & cat){
Stcrpy(cat.name) ;
}
Cat & operator = (const Cat & cat){
delete [] name ;
Stcrpy(cat.name) ;
return *this ;
}
const char * get_name() const{
return name ;
}
~Cat(){
delete [] name ;
}
};