码迷,mamicode.com
首页 > 其他好文 > 详细

构造函数,析构函数

时间:2017-04-09 14:03:08      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:缺省   style   ring   地方   end   ble   代码   小白   显示   

今天女朋友问我那错了,我一看,好长啊,就难得看了,然后她去问别人,还是没结果。中午又来问我。-_-伤不起

他的错误是没有构造函数,所以编译器会出现错误;

源代码如下:

#include <iostream.h>
#include<string>
class String
{
    char string1;
    char string2;
public:
    String(char st1,char st2)
    {
        string1=st1;
        string2=st2;
    }
    friend void inputstring(String &str);
    friend String strcat(String& s1,String &s2);
    friend String strcpy(String& s1,String &s2);
    friend String strcmp(String& s1,String &s2);
    friend void outputstring(String &str);
};
 void inputstring(String &str)
 {
     cin>>str.string1;
     cin>>str.string2;
 }
String strcat(String& s1,String &s2)
{
    String s;
    s=strcat(s1,s2);
    return s;
}
String strcpy(String& s1,String &s2)
{
    String s;
    s=strcpy(s1,s2);
    return s;
}

String strcmp(String& s1,String &s2)
{
    String s;
    s=strcmp(s1,s2);
    return s;
}
void outputstring(String &str)
{
    cout<<"("<<str.string1<<","<<str.string2<<")";
}
void main()
{
    String s1,s2;
    cout<<"请输入第一个字符串:"<<endl;
    inputstring(s1);
    cout<<"请输入第二个字符串:"<<endl;
    inputstring(s2);
}


        

因为错误,所以编译器显示:no appropriate default constructor available

原因是没有缺省构造函数,而且其中的String()里面已经有了参数,所以系统不能给他自动构造一个

所以我改了如下:

#include <iostream.h>
class String
{
    char string1;
    char string2;
public:
    String()
    {
        char st1,char st2;
        string1=st1;
        string2=st2;
    }
    ~String()
    {}
    friend void inputstring(String &str);
    friend String strcat(String& s1,String &s2);
    friend String strcpy(String& s1,String &s2);
    friend String strcmp(String& s1,String &s2);
    friend void outputstring(String &str);
};
 void inputstring(String &str)
 {
     cin>>str.string1;
     cin>>str.string2;
 }
String strcat(String& s1,String &s2)
{
    String s;
    s=strcat(s1,s2);
    return s;
}
String strcpy(String& s1,String &s2)
{
    String s;
    s=strcpy(s1,s2);
    return s;
}

String strcmp(String& s1,String &s2)
{
    String s;
    s=strcmp(s1,s2);
    return s;
}
void outputstring(String &str)
{
    cout<<"("<<str.string1<<","<<str.string2<<")";
}
void main()
{
    String s1,s2;
    cout<<"请输入第一个字符串:"<<endl;
    inputstring(s1);
    cout<<"请输入第二个字符串:"<<endl;
    inputstring(s2);
}

所以能够运行,没有出错,但是女朋友还是没有得到结果,因为他其他地方写错了,只能说不够细心,我在这只是提下编译器显示错误原因;对于改正吗,我就让她自己搞了。

大牛勿喷,小白一个。

构造函数,析构函数

标签:缺省   style   ring   地方   end   ble   代码   小白   显示   

原文地址:http://www.cnblogs.com/TGhost/p/6684226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!