两个问题:1在类中调用另一个类对象,要不要值传递的问题 2有静态成员变量时,怎么用模板
#include <stdafx.h>#include "iostream"
using namespace std;
第一个问题:在类中调用另一个类对象,要不要值传递的问题
class Point
{
public:
Point(int xx=0,int yy=0){x=xx;y=yy;}
Point(Point &p){x=p.x;y=p.y;}
int GetX(){return x;}
int GetY(){return y;}
private:
int x,y;
};
class Distance
{
Point p1,p2;
float d;
public:
Distance(){d=0;}
Distance(Point &pp1,Point &pp2);
float GetD(){return d;}
};
Distance::Distance(Point &pp1,Point &pp2):p1(pp1),p2(pp2)
{
d=p1.GetX()-p2.GetX();
}
//Distance::Distance(Point &pp1,Point &pp2)
//{d=pp1.GetX()-pp2.GetX();}
//写成这样也能得到同样的结果。
//写成哪种更好?为什么?
int main()
{
Point p1(1,1),p2(2,2);
Distance d2(p1,p2);
cout<<d2.GetD()<<endl;
return 0;
}
第二个问题:有静态成员变量时,怎么用模板
#include <stdafx.h>
#include "iostream"
using namespace std;
template <class T>
class Point
{
public:
Point(T xx=0,T yy=0);
T GetX(){return x;}
T GetY(){return y;}
private:
T x,y;
// static int Num;
};
//int Point::Num=0;
//不要这两句时,程序能运行。
//但是加上这两句后,
//将int Point::Num=0;改为int Point<int>::Num=0;在模板T为int时能运行,
//但T为float时(无论写成int Point<int>::Num=0;还是int Point<float>::Num=0;或者直接写int Point::Num=0;),程序都不能运行
//怎么解决?
template <class T>
Point<T>::Point(T xx,T yy)
{
x=xx;y=yy;
}
int main()
{
Point<float> p1(1,2);
cout<<"("<<p1.GetX()<<","<<p1.GetY()<<")"<<endl;
return 0;
}
我是新手,请教各位了~~