永发信息网

c++源程序

答案:2  悬赏:70  手机版
解决时间 2021-04-14 01:00

#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;

class mystr {
public:
mystr(const char* str)
: s(0), len(strlen(str))
{
if(len != 0)
newAndCopy(s, str, len + 1);
}

mystr(const mystr& as)
: s(0), len(as.len)
{
if(len != 0)
newAndCopy(s, as.s, len + 1);
}
bool operator < (const mystr& rhs)
{
return strcmp( s, rhs.s ) < 0;
}
bool operator > (const mystr& rhs)
{
return strcmp( s, rhs.s ) > 0;
}
bool operator == (const mystr& rhs)
{
return strcmp( s, rhs.s ) == 0;
}

mystr& operator = (const mystr& as)
{
if(&as == this)
return *this;
if(len > 0)
delete [] s;
len = as.len;
s = 0;
if(len != 0)
newAndCopy(s, as.s, len + 1);
}

friend ostream& operator << ( ostream& os, const mystr& rhs )
{
return os << rhs.s;
}

~mystr() { if(s) delete [] s; }

const char* c_str() const { return s; }
size_t size() const { return len; }

private:
static void newAndCopy(char*& dest, const char* src, int len)
{
dest = new char[len];
strcpy(dest, src);
}
char* s;
size_t len;
};

#define CMP( s1, s2, op ) cout << setw(20) << s1 << #op"\t" << setw(20) << s2 << ":\t" << (s1 op s2) << endl;
int main()
{
mystr s1("oh, at last");
mystr s2("frostmoan hungers");
mystr s3("speak fool!");
mystr s4(s2);
cout.setf(ios::boolalpha | ios::left);
CMP( s1, s2, > );
CMP( s2, s3, < );
CMP( s1, s3, == );
CMP( s2, s4, == );
return 0;
}

专家你好!你帮我看一下这个程序,第八行最开始那个冒号是什么意思哦?O(∩_∩)O谢谢你~

最佳答案

上面的兄弟说的一部分是有问题的:如果S是一个CONST的呢。就只能在构造数后面用冒号来初始化,不能在构造函数里面初始化,其它变量就可以用上面兄弟说的那种写法了。多看一下书,书上面会讲的。仔细一点,学程序是要常常复习和使用的。书要常常看。祝你成功。


mystr(const char* str)
: s(0), len(strlen(str))//这个冒号表示初始化后的S,len,
{
if(len != 0)
newAndCopy(s, str, len + 1);
}

全部回答

mystr(const char* str) //构造函数. : s(0), len(strlen(str)) //将数据成员s初始化为0,len初始化为参数str的长度 { //函数体. if(len != 0) newAndCopy(s, str, len + 1); }

这种写法其实就等于

mystr(const char* str) //构造函数. { s=0; len=strlen(str); //将数据成员s初始化为0,len初始化为参数str的长度 if(len != 0) newAndCopy(s, str, len + 1); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
100积分询问:《丑女无敌3》中,无敌变漂亮了
I just finish my last movie yesterday.A. m
广西贺州富川 征兵
长治市郊区物价局这个地址在什么地方,我要处
NBA标志上运球的人是谁?
华为C5600为何老是接收失败
你给的那个dnf2.5密码是多少?
上海1区60级TL武器鬼泣带60级毒王能卖多少钱?
建行快钱缴费什么意思,快钱缴费支出
游戏人生还能不能邀请加入
笔记本电脑怎么玩游戏不能全屏?
单选题The lecture given by
宁波市鄞州区集仕港秋实路555号杉井奥特莱斯
大纵湖门票多少
金美口腔门诊部怎么去啊,有知道地址的么
推荐资讯
请你按生活时间的先后顺序排列我国已发现的早
易家装饰工程这个地址在什么地方,我要处理点
一种服装原来售价200元,现在降低到了160元出
求英语翻译这首古诗:空山新雨后,天气晚来秋
丝路英雄里的新手任务个人资料
厦门岛内哪里有比较大型的新华都?
请问有什么好方法可以让自己不那么心烦~! 这
易方达重组指数分级(161123)好不好
葫芦岛市某中学学生连续一年多观测正午时操场
小草是在什么季节长出来的
我连自己的身体都照顾不好还做什么人,做什么
梦幻69DT号问价
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?