C++ point类
1、类中要有公有成员、私有成员。数据成员要有子对象、静态数据成员。成员函数要有至少二个普通成员函数,一个静态成员函数,一个友元函数,一个常成员函数。2、构造函数要重载无参...
1、类中要有公有成员、私有成员。数据成员要有子对象、静态数据成员。成员函数要有至少二个普通成员函数,一个静态成员函数,一个友元函数,一个常成员函数。
2、构造函数要重载无参、有参、复制构造函数,析构函数。
3、要实现单继承或多继承。
4、在程序中要对子对象、静态数据成员初始化,要调用普通成员函数、静态成员函数、友元函数、常成员函数。 展开
2、构造函数要重载无参、有参、复制构造函数,析构函数。
3、要实现单继承或多继承。
4、在程序中要对子对象、静态数据成员初始化,要调用普通成员函数、静态成员函数、友元函数、常成员函数。 展开
1个回答
展开全部
#include <iostream>
using namespace std;
struct Position{
int x;
int y;
Position(int x=0,int y=0):x(x),y(y){}
};
class Point{
Position* p;
static int total;
public:
Point(){p=new Position;++total;}
Point(int x,int y){p=new Position(x,y),++total;}
Point(const Point& pt){
p=new Position(pt.p->x,pt.p->y);
++total;
}
~Point(){delete p;}
static void showtotal(){cout<<"total:"<<total<<endl;}
void showx(){
cout<<"x="<<p->x<<endl;
}
void showx()const{
cout<<"x="<<p->x<<endl;
}
void showy(){
cout<<"y="<<p->y<<endl;
}
void showy()const{
cout<<"y="<<p->y<<endl;
}
void showpoint(){
cout<<"x="<<p->x<<endl;
cout<<"y="<<p->y<<endl;
}
void showpoint()const{
cout<<"x="<<p->x<<endl;
cout<<"y="<<p->y<<endl;
}
friend ostream& operator<<(ostream& os,const Point& pt){
os<<"x:"<<pt.p->x<<endl;
os<<"y:"<<pt.p->y<<endl;
return os;
}
};
int Point::total=0;
class Line:public Point{
Position p2;
public:
Line(int x=0,int y=0,int i=0,int j=0):Point(x,y),p2(x,y){}
void showp(){
cout<<p2.x<<p2.y<<endl;
}
};
int main()
{
Point p1,p2(2,4);
const Point cp(4,6);
cout<<p1<<p2<<endl;//调用operator<<()
Point::showtotal();
p1.showpoint();
p2.showpoint();
cp.showpoint();
return 0;
}
//vc6.0中测试通过
using namespace std;
struct Position{
int x;
int y;
Position(int x=0,int y=0):x(x),y(y){}
};
class Point{
Position* p;
static int total;
public:
Point(){p=new Position;++total;}
Point(int x,int y){p=new Position(x,y),++total;}
Point(const Point& pt){
p=new Position(pt.p->x,pt.p->y);
++total;
}
~Point(){delete p;}
static void showtotal(){cout<<"total:"<<total<<endl;}
void showx(){
cout<<"x="<<p->x<<endl;
}
void showx()const{
cout<<"x="<<p->x<<endl;
}
void showy(){
cout<<"y="<<p->y<<endl;
}
void showy()const{
cout<<"y="<<p->y<<endl;
}
void showpoint(){
cout<<"x="<<p->x<<endl;
cout<<"y="<<p->y<<endl;
}
void showpoint()const{
cout<<"x="<<p->x<<endl;
cout<<"y="<<p->y<<endl;
}
friend ostream& operator<<(ostream& os,const Point& pt){
os<<"x:"<<pt.p->x<<endl;
os<<"y:"<<pt.p->y<<endl;
return os;
}
};
int Point::total=0;
class Line:public Point{
Position p2;
public:
Line(int x=0,int y=0,int i=0,int j=0):Point(x,y),p2(x,y){}
void showp(){
cout<<p2.x<<p2.y<<endl;
}
};
int main()
{
Point p1,p2(2,4);
const Point cp(4,6);
cout<<p1<<p2<<endl;//调用operator<<()
Point::showtotal();
p1.showpoint();
p2.showpoint();
cp.showpoint();
return 0;
}
//vc6.0中测试通过
更多追问追答
追问
怎么不是类得继承呀 不过你的答案很好了 要是没有更好的我就把分给你 非常感谢
追答
这是时间问题啦,我是现场写的,非要继承吧POSITION改成类,再稍微改下就可以了,我这是为了显示更高级的东西嘛,你要得话我给你改改吧.
今晚没时间了,如果需要,明晚看又没有时间.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询