ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++入门——类和对象之封装

2021-06-12 15:33:10  阅读:138  来源: 互联网

标签:封装 入门 Point int C++ 访问 circle 权限 Circle


参考链接

  1. https://www.bilibili.com/video/BV1et411b73Z?p=99

面向对象三大特征

三大特征为:封装、继承和多态

封装

封装的意义

  1. 将属性和行为作为一个整体,表现生活中的事物
  2. 将属性和行为加以权限控制

一些常见说法

  1. 类中的属性和行为,统一称为成员
  2. 属性可以叫成员属性或成员变量
  3. 行为可以叫成员函数或成员方法

访问权限

访问权限有三种:

  1. public 公共权限:类内可以访问,类外可以访问
  2. protected 保护权限:类内可以访问,类外不可用访问,儿子也可以访问父亲中的保护内容
  3. private 私有权限:类内可以访问,类外不可以访问,儿子不可用访问父亲的私有内容

struct和class区别

在C++中struct和class唯一的区别就在于默认的访问权限不同:

  1. struct默认权限为公共
  2. class默认权限为私有

成员属性私有化

  1. 将所有成员属性设置为私有,可以自己控制读写权限
  2. 对于写权限,我们可以检测数据的有效性

将一个类拆成两个文件

在头文件中写声明,在源文件中写实现。

如Circle类:

class Circle
{
public:
    // 半径
    void setR(int r)
    {
        m_R = r;
    }
    int getR()
    {
        return m_R;
    }
    // 圆心
    void setCenter(Point center)
    {
        m_Center = center;
    }
    Point getCenter()
    {
        return m_Center;
    }

private:
    int m_R;
    Point m_Center;
}

可以拆为头文件circle.h和源文件circle.cpp。在使用circle类时,只需要包含头文件即可,使代码更清晰。

circle.h

只做成员函数的声明,还有包含使用的其他类的头文件:

#pragma once
#include <iostream>
using namespace std;
#include "point.h"

class Circle
{
public:
    // 半径
    void setR(int r);
    int getR();
    // 圆心
    void setCenter(Point center);
    Point getCenter();

private:
    int m_R;
    Point m_Center;
}

circle.cpp

引用circle.h头文件,为成员函数加上作用域:

include “circle.h”

void Circle::setR(int r)
{
    m_R = r;
}
int Circle::getR()
{
    return m_R;
}
// 圆心
void Circle::setCenter(Point center)
{
    m_Center = center;
}
Point Circle::getCenter()
{
    return m_Center;
}

标签:封装,入门,Point,int,C++,访问,circle,权限,Circle
来源: https://blog.csdn.net/beilizhang/article/details/117847972

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有