char *bookname,*authors,*publishing_home; 只是定义了一个指针 并没有分配足够的空间来存储实参的字符串,只是指向了常量字符串;
应该先算出形参的长度 然后开辟相应长度的空间来存放。
#include
book::book(const char *s1=" ",const char *s2=" ",int i=0,const char *s3=" ",double d=0.0)
{ int i;
for(i=0;s1[i]!='\0';i++);
bookname=new char[i+1];
strcpy(bookname,s1);
for(i=0;s2[i]!='\0';i++);
authors=new char[i+1];
strcpy(authors,s2);
for(i=0;s3[i]!='\0';i++);
publishing_home=new char[i+1];
strcpy(publishing_home,s3);
price=d;
pages=i;}