中易网

给程序注释 并逐行描述程序运行结果的来由

答案:2  悬赏:30  
解决时间 2021-01-16 01:44
  • 提问者网友:焚苦与心
  • 2021-01-15 11:59
给程序注释 并逐行描述程序运行结果的来由
最佳答案
  • 二级知识专家网友:天凉才是好个秋
  • 2021-01-15 12:26
#include
class A //类A的定义
{
public:
A(int x=1){a=x;} //构造函数
void setA(int x){a=x;} //设置函数
int getA() const { return a; } //获取函数
private:
int a;
};

class B //虚基类B的定义
{
public:
B(int x=1){b=x;}
void setB(int x){b=x;}
virtual void print() const{cout<<"B: b="< virtual int f1() const = 0; //纯虚函数定义
protected:
int b;
};

class C: public B //B的派生类C的定义
{
public:
C( int x= 1, int y= 1, int z=1):B(z){c1=x; c2=y;} //构造函数首先构造B
void set(int x, int y, int z){c1=x; c2=y; b=z;} //然后构造自己
void print() const
{cout<<"C: c1="< a1.setA(10); a2.setA(10+20); //调用设置函数将a1设置成10,a2设置成30
cout<<"A: "<
C c2(1, 2, 3); //创建C的对象同时初始化
c2.print();
c2.setB(2); //调用基类设置函数,b值设置为2
cout<<"output1: "< c2.set(2, 4, 6); //调用c2设置函数,c1=2,c2=4,c3=6
c2.print();

B *p=new C(3, 2, 1); //定义一个指向基类B的指针用派生类C的指针去初始化
p->print(); //因为多态性且print()被定义为虚函数,
//实际上调用的是C的对象的打印函数,因此输出c1=3,c2=2,b=1
}
全部回答
  • 1楼网友:山君与见山
  • 2021-01-15 12:35
代码中实现的功能是将一个字符串分割后再倒着放:
例如 *pStr="hello word",steps=5,
经过这个函数后,变成 word hello
具体解释如下:
//申明一个返回型是void 的函数,函数名LoopMove.
//*pStr 要进行分割再倒置的字符串。
//steps 字符串要分割的位置
void LoopMove(char *pStr,int steps)
{
int n=stren(pStr)-steps;//计算出分割后的第二段有几个字符
char tmp[MAX_LEN]; //申明一个具有MAX_LEN长度的字符串
strpy(tmp,pStr+n);//将分割后的第二段的字符全拷贝入tmp中,
strpy(tmp+steps,pStr);//将分割后的第一段的字符接着拷贝入tmp中。
*( tmp + strlen ( pStr ) ) = ’/0’; //添加字符串结束标志'/0'
strcpy( pStr, tmp ); //将处理的结果tmp返回到pStr中。
//结束
//如果输入的是LoopMove ( "hello word", 5);
//那么出来的将是word hello.
//以上没经过测试,你自己可以自己手写测试一下。
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息