新学C++,类的写法基本一样。继承
除了protect以外主要是private和public两种
首先上主函数,不管Rectangle.h怎么写。主函数就这样了。引用Rectangle类。
- //7_11.cpp
-
#include <iostream>
-
#include <cmath>
-
#include "Rectangle.h"
-
using namespace std;
-
-
int main(){
-
Rectangle rect;
-
rect.InitR(2,3,20,10);
-
rect.Move(3,2);
-
std::cout<<"The data of rect(X,Y,W,H):"<<endl;
-
-
-
cout<<rect.GetX()<<",";
-
cout<<rect.GetY()<<",";
-
-
cout<<rect.GetW()<<",";
-
cout<<rect.GetH()<<",";
-
cout<<endl;
-
return 0;
-
}
下面是不太良好的设计方式
- //Rectangle.h
-
class Point{
-
public:
-
void InitP(float xx=0,float yy=0){X=xx;Y=yy;}
-
void Move(float xOff,float yOff){X+=xOff;Y+=yOff;}
-
float GetX(){return X;}
-
float GetY(){return Y;}
-
private:
-
float X,Y;
-
};
-
//修饰成为public 子类自动获得父类所有的方法。
-
//修饰成为private则需要开外挂。重写并且引用父类的方法
-
class Rectangle: private Point{
-
public:
-
void InitR(float x,float y,float w,float h)
-
{Point::InitP(x,y);W=w;H=h;}
-
void Move(float x,float y){Point::Move(x,y);}//新方法
-
float GetX(){return Point::GetX();}//新方法
-
float GetY(){return Point::GetY();}//新方法
-
float GetH(){return H;}
-
float GetW(){return W;}
-
private:
-
float W,H;
-
};
在类Rectangle里面重写了父类的三个方法。这里父类是私有继承
随着父类的修改。子类也要修改。这里还是有关联。不好。应该这样写。
- //Rectangle.h
-
class Point{
-
public:
-
void InitP(float xx=0,float yy=0){X=xx;Y=yy;}
-
void Move(float xOff,float yOff){X+=xOff;Y+=yOff;}
-
float GetX(){return X;}
-
float GetY(){return Y;}
-
private:
-
float X,Y;
-
};
-
//修饰成为public 子类自动获得父类所有的方法。
-
//修饰成为private则需要开外挂。重写并且引用父类的方法
-
class Rectangle: private Point{
-
public:
-
void InitR(float x,float y,float w,float h)
-
{InitP(x,y);W=w;H=h;}
-
-
float GetH(){return H;}
-
float GetW(){return W;}
-
private:
-
float W,H;
-
};
子类就写子类的,和父类无关。不过看起来第一个方法好像也无关。
通过读<冒号课堂>我理解的里面更推荐第二种写法。其实第一种也不用关注细节。
问题挂在这里。如果有那个朋友看到了能否解答一下。
阅读(1559) | 评论(0) | 转发(0) |