注册 登录
编程论坛 C++教室

大侠们帮帮忙!!实在找不出啥错?

kongwei254 发布于 2008-05-19 21:31, 631 次点击
//////
#include <iostream>
#ifndef STRNGBAD_H
#define STRNGBAD_H
#include "stringbad1.h"
using namespace std;
class stringbad
{
private:
    char *str;
    int len;
    static int num_strings;
public:
    
    stringbad(const char *s);
    stringbad();
    ~stringbad();
//friend function
    friend ostream & operator<<(ostream &os,const stringbad &st);
};
#endif

////////////////////////////////////////////////////
#include <iostream>
#include <cstring>
#include "stringbad1.h"
using namespace std;
int stringbad::num_strings=0;
stringbad::stringbad(const char *s)
{
    len=strlen(s);
    str=new char[len+1];
    strcpy(str,s);
    num_strings++;
    cout<<num_strings<<":\""<<str<<"\"object created\n";
}
stringbad::stringbad()
{
    len=4;
    str=new char[4];
    strcpy(str,"c++");
    num_strings++;
    cout<<num_strings<<":\""<<str<<"\"default object created\n";
}
stringbad::~stringbad()
{
    cout<<num_strings<<":\""<<str<<"\"object deleted\n";
    num_strings--;
    cout<<num_strings<<"left\n";
    delete [] str;
}
ostream & operator<<(ostream &os,const stringbad &st)
{
    os<<st.str;
    return os;
}

/////////////////////////////////////////////////////////////

#include <iostream>
#include "stringbad1.h"
using namespace std;
void callme1(stringbad &);
void callme2(stringbad);
int main()
{
    stringbad headline1("welcome to here!");
    stringbad headline2("shan dong jinan");
    stringbad sports("here is my home");
    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<<"end of main()\n";
    return 0;
}
void callme1(stringbad &rsb)
{
    cout<<"string passed by reference:\n";
    cout<<"\""<<rsb<<"\"\n";
}
void callme2(stringbad sb)
{
    cout<<"string passed by value:\n";
    cout<<"\""<<sb<<"\"\n";
}
7 回复
#2
Msist2008-05-20 12:26
新手莫怪
#include <iostream>
#include "stringbad1.h"// stringbadl.h是什么东东?
貌似没有这样的头文件
#3
newyj2008-05-20 13:52
"stringbad1.h"
是自己定义的头文件
#4
lixingstone2008-05-20 15:55
啥错啊。
#5
bibingyan2008-05-26 23:30
你还是把你那个自己定义的"stringbad1.h"贴出来看看吧。
#6
kongwei2542008-05-29 15:17
已经解决了谢谢
#7
笨小孩62008-05-29 21:22
解决了为什么不说出问题所在?楼主不厚道,只知索取,不知奉献!
#8
kongwei2542008-06-19 08:04
不好意思,这个只是C++编译器的原因!!
1