#include <iostream>
#include <string>
using namespace std;
class Book
{
private:
char *name;
char *author;
int sale;
public:
Book();
Book(char *a,char *b,int c);
void print();
~Book();
};
Book::Book()
{
cout<<"constructing...."<<endl;
}
Book::Book(char *a,char *b,int c)
{
name=new char[strlen(a)+1];
strcpy(name,a);
author=new char[strlen(b)+1];
strcpy(author,b);
sale=c;
}
void Book::print()
{
cout<<"name:"<<name<<" author:"<<author<<" sale:"<<sale<<endl;
}
Book::~Book()
{
if(name) delete[]name;
if(author) delete[]author;
}
int main()
{
Book b1;
Book b2("信号与系统","高建宁",1000000);
b1.print();
b2.print();
return 0;
}
书上要求:
class Book
{
private:
char *name;
char *author;
int sale;
public:
Book();
Book(char *a,char *b,int c);
void print();
~Book();
};
这部分是不能改的,只能增加相应的构造函数和析构函数
可是,在写无参数构造函数时,name和author都是指针型的,要怎么初始化啊?
这个程序是没错的,但是运行起来就有错,好像是内存的问题,在Book()中药怎么初始化才能不出错呢?
#include <string>
using namespace std;
class Book
{
private:
char *name;
char *author;
int sale;
public:
Book();
Book(char *a,char *b,int c);
void print();
~Book();
};
Book::Book()
{
cout<<"constructing...."<<endl;
}
Book::Book(char *a,char *b,int c)
{
name=new char[strlen(a)+1];
strcpy(name,a);
author=new char[strlen(b)+1];
strcpy(author,b);
sale=c;
}
void Book::print()
{
cout<<"name:"<<name<<" author:"<<author<<" sale:"<<sale<<endl;
}
Book::~Book()
{
if(name) delete[]name;
if(author) delete[]author;
}
int main()
{
Book b1;
Book b2("信号与系统","高建宁",1000000);
b1.print();
b2.print();
return 0;
}
书上要求:
class Book
{
private:
char *name;
char *author;
int sale;
public:
Book();
Book(char *a,char *b,int c);
void print();
~Book();
};
这部分是不能改的,只能增加相应的构造函数和析构函数
可是,在写无参数构造函数时,name和author都是指针型的,要怎么初始化啊?
这个程序是没错的,但是运行起来就有错,好像是内存的问题,在Book()中药怎么初始化才能不出错呢?