在比赛前一天写万恶的C++,我的内心也真是够强大,看了党课材料,做了高数线代,看了matlab和Android的接口,已经接近崩溃的状态,codeblocks不知道怎么了,卡到要命,还是听话的用dev吧~emmm 写完c渣渣就睡叭,明早六点钟的闹钟┭┮﹏┭┮//逃
补充一句:当时包菜师兄的矩阵快速幂用到了重载,咳咳,不过没看懂~真是打扰了
Title
设计一个字符串类MyString,使其只有1个私有成员:char str(指向字符串的指针); 该类具有构造函数、析构函数、复制构造函数,且具有其他成员函数:(参照上次作业),并为该类重载运算符加法"+="(相当于拼接),“=”(赋值,注意要深拷贝赋值),"[]"(返回取下标为index的字符)
Code
#include <bits/stdc++.h>
using namespace std;
class MyString{
public:
MyString(char *str):str(str){
str=str;
}
MyString(MyString &s);
string gets(){return str;}
//+=重载
void operator+=(const MyString &s){
strcat(str,s.str);
}
//=重载
void operator=(const MyString &s){
str=new char[strlen(s.str)+1];
strcpy(str,s.str);
}
//[]重载
char &operator[](int i){
return str[i];
}
//顺便把输出也写了吧;
friend ostream &operator<<(ostream &out,const MyString &s){
out<<s.str<<endl;
return out;
}
//还有输入
friend istream &operator>>(istream &in,const MyString &s){
in>>s.str;
return in;
}
//析构
~MyString(){cout<<"deleting"<<endl;}
private:
char *str;
};
MyString::MyString(MyString &s){
cout<<"process"<<s.str<<endl;
}
int main()
{
char a[100],b[100];
scanf("%s%s",a,b);
char *p=a;
char *q=b;
MyString m(p),n(q),l(a);
m+=n;
cout<<"1下标输出的结果:"<<m.gets()[1]<<endl;
cout<<"+=结果为:"<<m.gets()<<endl;
m=n;
cout<<"=结果为:"<<m.gets()<<endl;
//cout<<m.gets()+n.gets();
return 0;
}
网友评论