咸鱼的翻身计划4:C++中的类和对象,封装

本文介绍了C++中的面向对象特性,包括封装的概念和作用,以及类的定义。通过圆的类为例展示了如何定义属性(如半径)和行为(如计算周长)。还详细阐述了访问权限的三种类型:public、private和protected,并给出了struct与class的区别。文章强调了成员属性私有化的重要性,以确保数据安全并提供有效的数据验证。最后,通过示例代码演示了如何在实践中应用这些概念。
摘要由CSDN通过智能技术生成

C++认为万事万物皆为对象,对象上有其行为(通常是一个个封装的函数,也叫成员函数)和属性(也叫成员属性)。

比如人就可以作为一个对象,年龄,身高等则是人的属性,走,跳,吃饭则是人的行为。

具有相同性质的对象我们可以抽象称之为类。人属于人类。

1.封装

封装是c++面向对象三大特性之一。

封装的意义    1 将属性和行为作为一个整体,表现生活中的事物。

                      2 将属性和行为加以权限控制。

定义一个类的语法:

class 类名{访问权限:属性/行为};

下面写一个圆的类。

#include<iostream>
using namespace std;

const double PI=3.14;//定义一个常量 圆周率。



class circle
{
//权限
public:  

    //属性
    //半径
    int m_r;   

    //行为
    //输出圆的周长
    void coutZC()
    {
        cout<<"圆的周长是:"<<2*PI*m_r<<endl;
    }  
};

int main()
{
    circle c1;    //定义一个圆
    c1.m_r=10;    //给这个圆的半径初始化
    c1.coutZC();    //调用这个圆的行为,也叫成员函数。

    return 0;
}

2.访问权限

三种权限:
公共权限        public:        类内类外都可以访问

私有权限        private:       类内可以访问,类外不可以访问

保护权限        protected:   类内可以访问,类外不可以访问

在哪访问就是你想在哪使用这个变量或者函数,比如一个类内私有权限定义的数,在类外你就不能在main()函数中通过 c1.m_r=100; 这种赋值操作来改变他的值,也不能输出这个数,这个数你只能在他的类中直接使用。在私有权限下定义函数也是,只能在类内使用。

3.struct和class的区别

他俩功能都是创建一个类,区别就是如果你不加权限限制,struct中默认是私有权限,class中默认是公共权限。

4.成员属性私有化。

就是一般我们会将成员属性设置为私有权限,然后通过公共权限的函数自己来控制读和写。这样对于写权限我们可以监测数据的有效性。

案例:

#include<iostream>
using namespace std;

const double PI=3.14;//定义一个常量 圆周率。



class circle
{
//公共权限
public:  
    //行为
    //输出圆的周长
    void coutZC()
    {
        cout<<"圆的周长是:"<<2*PI*m_r<<endl;
    }

    void cinR(int r)    //输入圆的半径
    {
        //数据有效性检测
        if(r<0||r>100)
        {
            cout<<"输入的半径长度不合法"<<endl;
            return ;
        }
            m_r=r;
    }
    void cinYX(int x,int y)    //定义圆的圆心
    {
        m_x=x;
        m_y=y;
    }
    void coutR()    //输出圆的半径    
    {
         
    
        cout<<"圆的半径是:"<<m_r<<endl;
    }
    void coutYX()    //输出圆的圆心坐标
    {
        cout<<"圆的圆心坐标是:"<<m_x<<' '<<m_y<<endl;
    }

//私有权限    只能在类内调用,但可以通过定义调用公共权限的函数在类内调用,以达到同样的效果。
private:
    //属性
    //半径
    int m_r;
    //圆心坐标
    int m_x,m_y;
    
void test()
{
    cout<<"test函数被调用"<<endl;
}
      
};

int main()
{
    circle c1;    //定义一个圆

    c1.cinR(10);    //给这个圆的半径初始化

    c1.cinYX(0,10);    //初始化圆心

    c1.coutR();    //输出圆的半径

    c1.coutYX();    //输出圆的圆心坐标

    c1.coutZC();    //调用这个圆的行为,也叫成员函数。

    c1.test();    //运行时会报错,因为这个函数在私有权限下定义的。

    c1.m_r=100;    //运行时会报错,因为这个函数在私有权限下定义的。

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值