在DVC C++5.11中编写好类的头文件,函数实现文件,程序运行文件然后总之通不过编译,求解
//头文件:
#include <iostream>
#ifndef STRNGBAD_H_
#define STRNGBAD_H_
class StringBad
{
private:
char * str;
int len;
static int num_strings;
public:
StringBad(const char * s);
StringBad();
~StringBad();
friend std::ostream & operator <<(std::ostream & os,const StringBad & st);
};
#endif
//函数实现文件
#include "StringBad.h"
using std::cout;
int StringBad::num_strings=0;
StringBad::StringBad(const * s)
{
len=std::strlen(s);
str=new char[len+1];
std::strcpy(str,s);
num_strings ++;
cout<<num_strings<<": \""<<str
<<"\" object create\n";
}
StringBad::StringBad()
{
len=4;
str=new char[4];
std::strcpy(str,"c++");
num_strings++;
cout<<num_strings<<": \""<<str
<<"\"default object create\n";
}
StringBad::~StringBad()
{
cout<<"\""<<str<<"\"object deleted, ";
--num_strings;
cout<<num_strings<<" left\n";
delete []str;
}
StringBad::operator <<(std::ostream & os,const StringBad & st)
{
os<<st.str;
return os;
}
//
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/763174690876165.png "#left")
运行文件:
#include <iostream>
using std::cout;
#include "StringBad.h"
void callme1(StringBad &);
void callme2(StringBad);
int main()
{
using std::endl;
{
cout<<"StringBad an inner block.\n";
StringBad headline1 ("Celery Stalks at Midnight");
StringBad headline2 ("Lettuce Prey");
StringBad sports("Spinach Leave Bow1 for Dollars");
cout<<"headline1: "<<headline1 <<endl;
cout<<"headline2: "<<headline2 <<endl;
cout<<"sports: "<<sports<<endl;
callme1(headline1);
cout<<"headline1: "<<headline1 <<endl;
callme2(headline2);
cout<<"headline2: "<<headline2 <<endl;
cout<<"Initialize one object to another:\n";
StringBad sailor=sports;
cout<<"sailor: "<<sailor<<endl;
cout<<"Assign one object to another:\n";
StringBad knot;
knot=headline1;
cout<<"knot: "<<knot<<endl;
cout<<"Exiting the bloak.\n";
}
cout<<"End of main()\n";
return 0;
}
void callme1(StringBad & rsd)
{
cout<<"String passed by reference:\n";
cout<<"\""<<rsd<<"\"n";
}
void callme2(StringBad sb)
{
cout<<"String passed by value:\n";
cout<<"\""<<sb<<"\"n";
}