标题:继承与派生
只看楼主
大剑
Rank: 2
等 级:论坛游民
帖 子:30
专家分:25
注 册:2011-11-16
结帖率:100%
已结贴  问题点数:10 回复次数:3 
继承与派生
三、项目名称:(继承与派生)
1、已知类Cstring和main()函数class Cstring{
    char *str;
    int size;
    public:
        ….
};
(1)、主程序如下:
void  main()
{
    Cstring s1(“is a wondful ”);//调用有字符串参数的构造函数
    Cstring s2(“programming  Language!”);
    Cstring s3; //调用没有参数的构造函数
    S3=”C++”+(s1+s2) //调用复制(拷贝)构造函数,同时还要对“+”进行重载
}
试编写一个程序,以实现main()函数中的字符串拼接。输出结果如下:

(2)、主程序如下:
void  main()
{
    Cstring s1(“C++  is a wondful ”);//调用有字符串参数的构造函数
    Cstring s2(“programming  ”);
    Cstring s3; //调用没有参数的构造函数
    s3= (s1+s2)+ “Language!”//调用复制(拷贝)构造函数,同时还要对“+”进行重载
试编写一个程序,以实现main()函数中的字符串拼接。输出结果如(1)的结果
搜索更多相关主题的帖子: 继承 拼接 public 主程序 字符串 
2011-11-28 19:30
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
得分:10 
因为我最近也在学习c++的东西,学了大约一个月吧,所以看见你的这篇帖子,觉得这两道题挺好的,所以就给你写了代码,昨天晚上给你写,但是写的时候却遇到了一点问题,晚上躺在床上想明白了问题出在了哪里,早上起来的时候把问题解决了。毕竟才学了一个月的c++,所以代码风格什么的可能不是很好,就凑合着看吧!

说明一下:我觉得Cstring类中的那个size没什么用,所以我想的时候就没写size,为了看一下结果,我自己又加了一个show()函数(当然了,你在重新整理时可以按照自己的意思,把我加的一些东西给删除掉),如果你用的是vc6.0版本的编译器的话,会出现问题,所以建议使用更高版本的编译器,比如用vs2010。好了,废话就不多说了,如有问题,直接回复在这篇帖子里就可以了!

代码如下:

程序代码:
# include <stdlib.h>
# include <string.h>
# include <iostream>
using namespace std;

class Cstring
{
private:
    char *str;
public:
    Cstring()
    {
        str = new char[10];
        if(str)
            strcpy(str, "Hello");
    }
    Cstring(char *p)
    {
        str = new char[strlen(p)+1];
        if(str)
            strcpy(str, p);
    }
    Cstring(const Cstring &cs)
    {
        str = new char[strlen(cs.str)+1];
        if(str)
            strcpy(str, cs.str);
    }
    Cstring operator +(const Cstring &cs)
    {
        Cstring temp;
        temp.str = new char[strlen(str)+strlen(cs.str)+1];
        strcpy(temp.str, str);
        strcat(temp.str, cs.str);
        return temp;
    }
    Cstring operator +(const char *p)
    {
        Cstring temp;
        temp.str = new char[strlen(str)+strlen(p)+1];
        if(temp.str)
        {
            strcpy(temp.str, str);
            strcat(temp.str, p);
        }
        return temp;
    }
    friend Cstring operator +(char *p, const Cstring &cs)
    {
        Cstring temp;
        temp.str = new char[strlen(cs.str)+ strlen(p)+1];
        if(temp.str)
        {
            strcpy(temp.str, p);
            strcat(temp.str, cs.str);
        }
        return temp;
    }
    Cstring operator =(const Cstring &cs)
    {
        str = new char[strlen(cs.str)+1];
        strcpy(str, cs.str);
        return *this;
    }
   
    void show()
    {
        cout<<str<<endl;
    }
    ~Cstring()
    {
        delete []str;
    }
};


int main()
{
    Cstring s1("is a wondful");
    Cstring s2("programming  Language!");
    Cstring s3;
    s3 = "c++" + (s1 + s2);
    s3.show();
    s3 = (s1 + s2) + "c++";
    s3.show();
    system("pause");
    return 0;
}

愿用余生致力编程
2011-11-29 10:10
大剑
Rank: 2
等 级:论坛游民
帖 子:30
专家分:25
注 册:2011-11-16
得分:0 
回复 2楼 我菜119
很好啊! 每次的if不理解!

[ 本帖最后由 大剑 于 2011-11-29 22:46 编辑 ]
2011-11-29 12:00
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
得分:0 
检验指针是否成功赋值

愿用余生致力编程
2011-11-30 20:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-356434-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.244341 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved