C++_类和对象

类和对象基本介绍

类的基本概念

在定义一个类和一个结构体后,发现他们的用法差不多。

#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;
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值