类和对象基本介绍
类的基本概念
在定义一个类和一个结构体后,发现他们的用法差不多。
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
using namespace std;
struct hero
{
char name[64];
int sex;
};
void PrintHero(struct hero &h)
{
cout << "hero:" << endl;
cout << "name = " << h.name << endl;
cout << "sex = " << h.sex << endl;
}
class Advhero
{
private: //在private下定义的成员变量和方法只能在类的内部进行访问
int height[55];
int weight[55];
public: //访问控制权限,在public下面定义的成员变量和成员函数,是能够在类的内部和外部都可以访问的
char name[64];
int sex;
void PrintAdvhero() //类和结构体不一样,就在于类里面可以直接添加函数
{
cout << "advhero:" << endl;
cout << "name = " << name << endl;
cout << "sex = " << sex << endl;
}
};
int main()
{
hero h; //其中hero为数据类型,h为变量
strcpy_s(h.name, "cherry");
h.sex = 0;
PrintHero(h); //结构体h调用PrintHero函数方式
Advhero advH; //其中Advhero为类,advH为对象
strcpy_s(advH.name, "Tom");
advH.sex = 1;
advH.PrintAdvhero(); //对象advH调用类里面的函数方式
return 0;
}
类的private和public体现了类的封装属性,不想给外界使用的变量和函数可以放在private中。
类的封装
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
using namespace std;
class MyDate
{
public:
void init_date()
{
cout << "year,month,day" << endl;
cin >> year;
cin >> month;
cin >> day;
}
//打印data的接口
void print_data()
{
cout << year << "年" << month << "月" << day << "日" << endl;
}
bool _is_leap_year()
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
return true;
}
return false;
}
private:
int year;
int month;
int day;
};
int main()
{
MyDate my_date;
my_date.init_date();
my_date.print_data();
if (my_date._is_leap_year() == true)
{
cout << "是闰年" << endl;
}
else
{
cout << "不是闰年" << endl;
}
return 0;
}
面向对象和面向过程
面向过程:函数发生驱动,
面向对象:对象发生驱动
* 面向对象的小练习:
求圆的周长和面积
数据描述:
半径,周长,面积均用实型数表示
数据处理:
输入半径r;
计算周长 = 2*pi*r;
计算面积 = pi*r*r;
输出半径,周长,面积;
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
using namespace std;
//求圆的周长和面积
class Circle
{
public:
void setR(double r) //设置圆的半径,因为从外部不能操作私有成员r
{
m_r = r;
}
double GetR()
{
return m_r;
}
double Get_Perimeter() //得到圆的周长
{
return 2 * 3.14*m_r;
}
double Get_Circlar_Area() //得到圆的面积
{
return 3.14*m_r*m_r;
}
private:
double m_r; //圆的私有成员-半径
};
int main()
{
Circle c;
c.setR(10);
cout << "圆的半径是:" << c.GetR() << endl;
cout << "圆的周长是:" << c.Get_Perimeter() << endl;
cout << "圆的半径是:" << c.Get_Circlar_Area() << endl;
return 0;
}