注册 登录
编程论坛 C++教室

C++程序题

antirrhinum 发布于 2006-12-14 18:13, 1157 次点击
class Sample
{
protected:
int x;
public:
Sample() { x=0; }
Sample(int val) { x=val; }
void operator++() { x++; }
};
class Derived:public Sample
{
int y;
public:
Derived():Sample(){ y=0; }
Derived(int val1,int val2):Sample(val1){ y=val2; }
void operator--(){ x--;y--;}
void disp()
{
cout<<"x="<< x <<" y=" << y << endl; f
}
};
void main ()
{
Derived d(3,5);
d.disp();
d++;
d.disp ();
d--;
d--;
d.disp();
}
请教输出结果!
11 回复
#2
pusawl2006-12-14 19:34
Derived d(3,5); //类Derived公有派生于Sample,并调用带参数的构造函数初始化其d对象的保护段成员x=3,y=5;其中x
//继承于它的基类Sample。
d.disp(); //输出x=3y=5
d++; //由于只在基类中超载了“++”运算符,所以调用基类的“++”超载函数将x++,y不做任何处理。
d.disp (); //显示结果当然是x=4y=5
d--; //在类Derived中超载了“--”运算符,调用Derived类的“--”超载函数将x、y进行“--”处理
d--; //在类Derived中超载了“--”运算符,调用Derived类的“--”超载函数将x、y进行“--”处理
d.disp(); //输出的结果是x=2y=3
#3
antirrhinum2006-12-14 20:00
答案!
答案是x=2,y=5,说是只对x有操作啊!
#4
pusawl2006-12-14 20:20
你的答案错误,我的是正确的,我在VC++6.0中编译运行的结果就是我上面的答案。
#5
peswe2006-12-14 22:54
这个程序我的编译都不能通过
好多警告!!!!
查询错误中!!!!
#6
zhubenben2006-12-15 08:32

程序错误如下:
void operator++() { x++; }
void operator--(){ x--;y--;}
重载的++, -- 操作符的用法为
++d, --d,
是前缀的++, --
如果要定义后缀的++, --
应该改为
void operator++(int) { x++; }
void operator--(int){ x--;y--;}
前缀++, --为
void operator++() { ++x; }
void operator--(){ --x;--y;}

[此贴子已经被作者于2006-12-15 9:26:04编辑过]

#7
pusawl2006-12-15 12:43
你的错误在这句,看见没?最后多了个f
还有,在VC++6.0中使用控制台程序去编译
并且要在文件开始使用:#include "iostream.h"

cout<<"x="<< x <<" y=" << y << endl; f
#8
caiqiufu2006-12-17 15:38
x=3 y=5
x=4 y=5
x=2 y= 3
#9
wyj4446985612006-12-17 17:16
x=3 y=5
x=4 y=5
x=2 y=3
同学是这样的
#10
Ling灵仔2006-12-17 17:25
没错,是这样,,
x=3 y=5
x=4 y=5
x=2 y=3
#11
tancui2006-12-17 21:25
#include <iostream>
using namespace std;
class Sample
{
protected:
int x;
public:
Sample() { x=0; }
Sample(int val) { x=val; }
void operator++() { x++; }
};
class Derived:public Sample
{
int y;
public:
Derived():Sample(){ y=0; }
Derived(int val1,int val2):Sample(val1){ y=val2; }
void operator--(int){ x--;y--;} //这才是d--的原型,--d的原型是&operator--()
void operator++(int){ x++;y++;}
void disp()
{
cout<<"x="<< x <<" y=" << y << endl;
}
};
void main ()
{
Derived d(3,5);
d.disp();
d++;
d.disp ();
d--;
d--;
d.disp();
}
#12
peswe2006-12-17 21:50

楼上所言甚是!!!!!
没错的!!!!!

1