c++构造函数为什么错误?需详解;

2024-11-30 18:14:44
推荐回答(1个)
回答1:

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;}