- 设计立方体类案例
- 设计class Cube
- 属性
- 长宽高
- 行为
- 设置长宽高
- 获取长宽高
- 获取面积
- 获取体积
- 通过全局函数和成员函数 判断两个立方体是否相等
- 点和圆关系案例
- 设计点和圆类
- 点类 Point
- 属性 x y
- 行为 设置 获取 x y
- 圆类 Circle
- 属性: 圆心 Point m_Center 半径 m_R;
- 行为: 设置 获取 半径 圆心
- 通过成员函数 和 全局函数 判断点和圆关系
- 分文件编写 点和圆类
立方体类
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
/*
设计立方体类(Cube),求出立方体的面积( 2*a*b + 2*a*c + 2*b*c )和体积( a * b * c),
分别用全局函数和成员函数判断两个立方体是否相等。
*/
class Cube
{
public:
//设置长宽高
void setL(int l)
{
m_L = l;
}
void setW(int w)
{
m_W = w;
}
void setH(int h)
{
m_H = h;
}
//获取长宽高
int getL()
{
return m_L;
}
int getW()
{
return m_W;
}
int getH()
{
return m_H;
}
//求面积
int calculateS()
{
return 2 * m_L*m_W + 2 * m_W*m_H + 2 * m_L*m_H;
}
//求体积
int calculateV()
{
return m_L * m_W * m_H;
}
//利用成员函数 判断立方体是否相等
bool compareCubeByClass( Cube &c )
{
return m_L == c.getL() && m_W == c.getW() && m_H == c.getH();
}
private:
int m_L; //长
int m_W; //宽
int m_H; //高
};
//利用全局函数 判断两个立方体是否相等
bool compareCube( Cube &c1, Cube &c2 )
{
/*if (c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH())
{
return true;
}
return false;*/
return c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH();
}
void test01()
{
Cube c1;
c1.setL(10);
c1.setW(10);
c1.setH(10);
cout << "c1面积为: " << c1.calculateS() << endl; //600
cout << "c1体积为: " << c1.calculateV() << endl; //1000
Cube c2;
c2.setL(10);
c2.setW(10);
c2.setH(10);
//利用全局函数判断 c1 和 c2是否相等
bool ret = compareCube(c1, c2);
if (ret)
{
cout << "c1 与 c2 相等" << endl;
}
else
{
cout << "c1 与 c2 不相等" << endl;
}
//利用成员函数 判断 c1 和 c2是否相等
ret = c1.compareCubeByClass(c2);
if (ret)
{
cout << "成员函数判断:c1 与 c2 相等" << endl;
}
else
{
cout << "成员函数判断:c1 与 c2 不相等" << endl;
}
}
int main(){
test01();
system("pause");
return EXIT_SUCCESS;
}
点和圆的关系
circle.h
.h 中包含成员变量和函数定义
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include "point.h"
//圆类
class Circle
{
public:
//设置半径
void setR(int r);
//获取半径
int getR();
//设置圆心
void setCenter(Point p);
//获取圆心
Point getCenter();
//判断点和圆关系
void isInCircleByClass(Point p);
private:
int m_R; //半径
Point m_Center; // 圆心
};
point.h
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
//点类
class Point
{
public:
//设置 x 、y
void setX(int x);
void setY(int y);
//获取 x 、y
int getX();
int getY();
private:
int m_X;
int m_Y;
};
circle.cpp
不用包含成员变量,但需要实现函数
另外如果它当前的作用是类的函数,需要加上作用域(表示是这个类的成员函数),否则是全局函数。
#include "circle.h"
//圆类
//设置半径
void Circle::setR(int r)
{
m_R = r;
}
//获取半径
int Circle::getR()
{
return m_R;
}
//设置圆心
void Circle::setCenter(Point p)
{
m_Center = p;
}
//获取圆心
Point Circle::getCenter()
{
return m_Center;
}
//判断点和圆关系
void Circle::isInCircleByClass(Point p)
{
int distance = (m_Center.getX() - p.getX())*(m_Center.getX() - p.getX()) + (m_Center.getY() - p.getY()) *(m_Center.getY() - p.getY());
int rDistance = m_R * m_R;
if (distance == rDistance)
{
cout << "成员函数判断:点在圆上" << endl;
}
else if (distance > rDistance)
{
cout << "成员函数判断:点在圆外" << endl;
}
else
{
cout << "成员函数判断:点在圆内" << endl;
}
}
point.cpp
#include "point.h"
//设置 x 、y
void Point::setX(int x)
{
m_X = x;
}
void Point::setY(int y)
{
m_Y = y;
}
//获取 x 、y
int Point::getX()
{
return m_X;
}
int Point::getY()
{
return m_Y;
}
点和圆关系案例.cpp
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include "circle.h"
#include "point.h"
/*
设计一个圆形类(AdvCircle),和一个点类(Point),计算点和圆的关系。
假如圆心坐标为x0, y0, 半径为r,点的坐标为x1, y1:
*/
点类
//class Point
//{
//public:
//
// //设置 x 、y
// void setX(int x)
// {
// m_X = x;
// }
// void setY(int y)
// {
// m_Y = y;
// }
// //获取 x 、y
// int getX()
// {
// return m_X;
// }
// int getY()
// {
// return m_Y;
// }
//private:
// int m_X;
// int m_Y;
//};
//
圆类
//class Circle
//{
//public:
// //设置半径
// void setR(int r)
// {
// m_R = r;
// }
// //获取半径
// int getR()
// {
// return m_R;
// }
//
// //设置圆心
// void setCenter(Point p)
// {
// m_Center = p;
// }
//
// //获取圆心
// Point getCenter()
// {
// return m_Center;
// }
//
// //判断点和圆关系
// void isInCircleByClass(Point p)
// {
//
// int distance = (m_Center.getX() - p.getX())*(m_Center.getX() - p.getX()) + (m_Center.getY() - p.getY()) *(m_Center.getY() - p.getY());
//
// int rDistance = m_R * m_R;
//
// if (distance == rDistance)
// {
// cout << "成员函数判断:点在圆上" << endl;
// }
// else if (distance > rDistance)
// {
// cout << "成员函数判断:点在圆外" << endl;
// }
// else
// {
// cout << "成员函数判断:点在圆内" << endl;
// }
// }
//
//private:
//
// int m_R; //半径
//
// Point m_Center; // 圆心
//};
//利用全局函数 判断点和圆关系
void isInCircle( Circle c , Point p )
{
int distance = (c.getCenter().getX() - p.getX())*(c.getCenter().getX() - p.getX()) + (c.getCenter().getY() - p.getY()) *(c.getCenter().getY() - p.getY());
int rDistance = c.getR() * c.getR();
if (distance == rDistance)
{
cout << "点在圆上" << endl;
}
else if (distance > rDistance)
{
cout << "点在圆外" << endl;
}
else
{
cout << "点在圆内" << endl;
}
}
void test01()
{
Point p;
p.setX(10);
p.setY(9);
Circle c;
Point pCenter;
pCenter.setX(10);
pCenter.setY(0);
c.setCenter(pCenter);
c.setR(10);
isInCircle(c, p);
c.isInCircleByClass(p);
}
class A
{
virtual void func() = 0;
};
class B :public A
{
};
class C :public B
{
};
int main(){
test01();
system("pause");
return EXIT_SUCCESS;
}