- 论坛徽章:
- 0
|
10可用积分
问题1:
#include<iostream>
using namespace std;
class Point
{
private:
int x,y;
public:
Point(int X,int Y){x=X;y=Y;}
int display(){cout<<"("<<x<<","<<y<<"";}
Point operator ++(); //对类Point重载++运算符
};
Point Point:perator++()
{ return Point(++x,++y);}
int main()
{
Point a(1,2);
cout<<"++a(1,2)="<<(++a).display();//运行结果是(2,3)++a(1,2)=4473856,为什么是出现这样的错误?
system("pause"
return 0;
}
问题2:
#include<iostream>
using namespace std;
class Shape
{
public:
virtual double getarea()=0;//纯虚函数
virtual double getperim()=0;
};
class rectangle:public Shape//应该不难理解,派生两个类
{
public:
rectangle (double x,double y){a=x; b=y;}
double getarea(){cout<<a*b;}
double getperim(){cout<<2*(a+b);}
private:
double a,b;
};
class circle:public Shape
{
public:
circle (double t){a=t;}
double getarea(){return 3.14*a*a;}
double getperim(){return 2*3.14*a;}
private:
double a;
};
void fun(Shape *a)
{
a->getarea();
a->getperim();
}
int main()
{
Shape *b;
rectangle c(3,4);//结果1214,如何把面积12和长度14的数据隔开?
circle d(4);//为什么圆类的长度面积没有显示呢?
b=&c;
fun(b);
b=&d;
fun(b);
}
问题3
#include<iostream>//输入字符串,计算其长度
using namespace std;
int slen(char *s)
{
for(i=0;s++;i++)
return i;
}
int main()
{
//在前面那个函数下,如何输入一个字符串呢?
cout<<"长度是"<<slen(s)<<endl;
return 0;
}
问题四
int a=5,*pa=&a,&(*pa)的值是多少?为什么?(我在机上试了,只是个内存地址...)
将单目运算符++重载为成员函数形式
#include<iostream>//这个程序的运行结果跟课本不同,课本的数据分别是23:59:59,23:59:59,0:0:1
using namespace std;
class Clock
{
public:
Clock(int NewH=0,int NewM=0,int NewS=0);
void ShowTime();
Clock&operator ++();//这里的&是什么意思,老师说去掉它也可以,为什么呢?
Clock operator ++(int );
private:
int Hour,Minute,Second;
};
Clock::Clock(int NewH,int NewM,int NewS)
{
if(0<NewS&&NewH<24&&0<=NewM&&NewM<60&&0<=NewS&&NewS<60)
{
Hour=NewH;
Minute=NewM;
Second+NewS;
}
else
cout<<"Time error!"<<endl;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
Clock&Clock:perator ++()
{
Second++;
if(Second>=60)
{
Second=Second-60;
Minute++;
if(Minute>=60)
Hour++;
if(Minute>=60)
{
Second=Second-60;
Hour++;
Hour+Hour%24;
}
}
return *this;
}
Clock Clock:perator++(int )
{
Clock old=*this;
++(*this);
return old;
}
int main()
{
Clock myClock(23,59,59);
cout<<"First time output:";
myClock.ShowTime();
cout<<"Show myClock++:";
(myClock++).ShowTime();
cout<<"show ++myClock:";
(++myClock).ShowTime();//我的运行结果是23:23:-1346719276,23:23:-1346719276,23:23:-1346719274,让我很奇怪,因为我是完全按书本敲进去的
return 0;
}
很希望从这次提问中学到些什么,谢谢。 |
|