5.
//第八章
//5.#include<iostream>
using namespace std;class Mammal{public: virtual void speak(){cout<<"Don'tknow~"<<endl;}//virtual写一个就可以了,后面会直接引用};
class Dog:public Mammal
{public: void speak(){cout<<"wangwangwang!"<<endl;}};
int main()
{ Dog a1; Mammal *p = &a1;a1. speak();
p->speak();//有结果输出,且输出非基类的结果
return 0;
}
6.
//6./*#include<iostream>
#include<math.h>usingnamespacestd;
constdoublePI=3.1415926;
classShape
{public:
virtualvoidgetArea()=0;
virtualvoidgetPerim()=0;
};//圆
classcircle:publicShape
{doubler;
public:
circle(doublei):r(i){}
voidgetArea()
{
cout<<"CirclegetArea:"<<r*r*PI<<endl;
}
voidgetPerim()
{
cout<<"CirclegetPerim:"<<2*r*PI<<endl;
}
};classRetangle:publicShape
{doublea,b,s;
public:
Retangle(doublex=0,doubley=0){
a=x;
b=y;
}
voidgetArea()
{
s=a*b;
cout<<"RetanglegetArea:"<<s<<endl;
}
voidgetPerim()
{
cout<<"RetanglegetPerim:"<<2*(a+b)<<endl;
}
};intmain()
{doubler,a,b;
cin>>r>>a>>b;
Shape *p;
circlec1(r);
p=&c1;
p->getArea();
p->getPerim();
Retanglec2(a,b);
p=&c2;
p->getArea();
p->getPerim();
return0;
}*/
7.
//7./*#include<iostream>usingnamespacestd;
classPoint
{intx,y;
public:Point(inta,intb)//构造函数,调用成员函数对x,y作初始化
{x=a; y=b; }
voidshow(){cout<<"x:"<<x<<"y:"<<y<<endl;}
Pointoperator++();
Pointoperator--();
Pointoperator++(int);
Pointoperator--(int);
};PointPoint::operator++()//前置
{x++;y++;return*this;
}PointPoint::operator--()
{x--;y--;return*this;
}//以下两个都可以
PointPoint::operator++(int)
{//return++(*this);
Pointa=*this;
a=++(*this);
returna;
}PointPoint::operator--(int)
{//return--(*this);
Pointa=*this;
a=--(*this);
returna;
}//以下这两个不正确,也不明白。
PointPoint::operator++(int)
{x++;y++;return*this;
}PointPoint::operator--(int)
{x--;y--;return*this;
}intmain()
{inta,b;
cin>>a>>b;
Pointp(a,b);
p.show();
cout<<"Show++p: ";
(++p).show();
cout<<"Show--p: ";
(--p).show();
cout<<"Showp++: ";
(p++).show();
cout<<"Showp--: ";
(p--).show();
return0;
}*/#include "iostream"
#include "iomanip"
using namespace std;
class Point {
private:
int x,y;
public:
Point(int i=0,int j=0);
friend Point operator ++(Point ob);
void print();
};
int main()
{
Point ob1(3,5),ob2;
cout<<"ob1:"<<endl;
ob1.print();
cout<<"++ob1:"<<endl;
ob2=++ob1;
ob2.print();
return 0; }
Point::Point(int i,int j)
{
x=i;
y=j; }
void Point::print()
{
cout<<"(x,y)"<<setw(5)<<"("<<x<<","<<y<<")"<<endl; }
Point operator ++(Point ob)
{
ob.x=++ob.x;
ob.y=++ob.y;//对象访问私有数据成员,,不太明白
return ob; }
C++虚函数与多态示例
本文通过C++代码示例展示了如何使用虚函数实现多态,并提供了圆形和矩形类的具体实现来演示多态特性。同时,还探讨了重载运算符的方式以及如何在类中使用自增和自减运算符。
595

被折叠的 条评论
为什么被折叠?



