标题:string 类的功能
取消只看楼主
黄昏的王座
Rank: 2
来 自:安徽亳州
等 级:论坛游民
帖 子:38
专家分:65
注 册:2011-10-5
结帖率:85.71%
已结贴  问题点数:20 回复次数:3 
string 类的功能
#include<iostream>
#include<cstring>
using namespace std;
class mystring
{
    public :
        mystring (char *n);
        mystring (int m);
        mystring ();
        mystring (mystring &Mytring);
        mystring &operator = (mystring &Mystring);
        mystring &operator + (mystring &p);
        void display();
        ~mystring();
    private :
        char *N;
        int M;
};
mystring::mystring(char *n)
{
    int len = sizeof(n);
    N = new char[len];
    strcpy(N, n);
}
mystring::mystring(int m)
{
    N = new char[m + 1];
    for (int i = 0; i < m; i++)
        N[i] = ' ';
    N[m] = '\0';
}
mystring :: mystring (mystring &Mystring ){
         M = Mystring.M;
         N = new char [M+1];
         strcpy(N,Mystring.N);
}
mystring::mystring()
{
    M = 1;
    N = new char[M];
    N[0] = '\0';

}
mystring &mystring::operator = (mystring &Mystring){
         M = Mystring.M;
         delete []N;
         N = new char [M+1];
         strcpy(N,Mystring.N);
         return *this;
}
mystring &mystring::operator + (mystring &p)
{
    char *NN;
    int MM = M;
    NN = new char[MM];
    strcpy(NN, N);
    delete []N;
    N = new char[MM + p.M + 1];
    strcpy(N, NN);
    strcat(N, p.N);
    N[MM + p.M] = '\0';
    delete[]NN;
    return *this;
}
void mystring::display()
{
    cout<<"<";
    if (N != NULL)
    cout<<N;
    cout<<">"<<endl;
}
mystring::~mystring()
{
    delete []N;
}
int main()
{
  mystring s1 ("sdfgfdgdf"), s2(5), s3, s4("nzx"), s5("liu"), s6;
  s1.display();
  s2.display();
  s3.display();
  s3 = s1;
  s3.display();
  s6 = s4 + s5;
  s6.display();
  return 0;
}





这是什么原因啊?  我是想编写一个能实现关于string 功能的类函数   可是老是出现这个问题  求大神帮忙看一下  ,  小弟感激不尽
搜索更多相关主题的帖子: class private display include public 
2011-12-01 18:24
黄昏的王座
Rank: 2
来 自:安徽亳州
等 级:论坛游民
帖 子:38
专家分:65
注 册:2011-10-5
得分:0 
回复 4楼 赵春晓
按照矩阵的运算规则,进行for循环相加就行了
2011-12-03 11:17
黄昏的王座
Rank: 2
来 自:安徽亳州
等 级:论坛游民
帖 子:38
专家分:65
注 册:2011-10-5
得分:0 
回复 3楼 我菜119
很感谢,谢谢你了啊;  还有一个问题  按照你改写的那种,运行的时候提示
,  如果直接写(s4+s5)就没有错误了 这是什么原因啊 难道是我的编译器的原因  我用的是code:blocks
2011-12-03 11:22
黄昏的王座
Rank: 2
来 自:安徽亳州
等 级:论坛游民
帖 子:38
专家分:65
注 册:2011-10-5
得分:0 
回复 10楼 我菜119
就是那个程序, 如果写的是s6 = s4 + s5; s6.display();就提示出错,但是如果写(s4 + s5).display();就能运行   这个是因为什么 ,  关于运算符重载的问题刚刚接触,所以还有的不太懂  呵呵
2011-12-04 21:24



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




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

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