类与对象:封装

打在前面

自己感觉类与结构体很相似,所以开头是一点类与结构体的区别
类中的属性行为统一称为 "成员"
所以属性又被称为:成员属性或者是成员变量
行为又被称为:成员函数或者是成员方法
数组是一系列相同类型的元素的集合
结构体是不同类型元素的集合
类不仅仅是数据类型不同的元素的集合,还包含了元素操作的方法(行为)
所以可以说是结构体是一种特殊的

关于定义方面

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

  • struct默认的权限是公有
  • class默认权限是私有(private)
    有说C++语言里面struct里面是可以写函数的,C语言不行,但是尽管结构体也是可以包含成员函数的,但是很少会这样做,通常情况下结构体的声明只会包含成员变量,而且结构体的声明通常不包括public和private

面向对象

使用现实世界的概念抽象地思考问题从而自然地解决问题
C++面向对象的三大特性: 封装、继承、多态

封装

任何对象都有一组数据和操作,对象实现了数据操作相结合,将它们视为一个独立的单元的行为就是 封装,相同特征的一组对象进行抽象就形成了类。
意义

  • 将属性和行为作为一个整体,用来表达生活中的的事物
  • 将属性和行为加以权限控制(在类的外部不能直接访问类内成员)
    可以通过指针变相的访问private类型的成员,但是一般不建议使用
    访问权限
    public 公共权限 成员在类内可以访问,在类外也可以访问
    private 私有权限 成员在类内可以访问,在类外不可以访问 在继承中子成员可以访问父成员的内容
    protected 保护权限 成员在类内可以访问,在类外不可以访问 在继承中子成员不可以访问父成员的内容
    将成员属性设置为私有可以控制读写成员值的权限,另外对于写权限更容易实现检测数据的有效性
    使用类内函数完成上面的两部分内容,使用不同的函数来控制读写,来控制读写权限,然后通过在读写中添加检测数据的代码来检测输入的数据是否有效。
    例如以下代码:
//#include <fstream>遇到了一个没有见到的问题,说是不能使用不完整的类型,但现在我把它注释掉也是可以运行的
#include<cstring>
#include <iostream>
using namespace std;
class person
{
private:
    string name; //把这个名字设置为只读不可写的类型
    int age; //把年龄设置为可读可写的类型
    int password; //把密码设置为可写不可读的类型
     //针对于上面的三个情况,可以对一个成员的读和写方分别写出类内函数,以达到控制权限的目的
public://定义函数将函数设置为公共权限
    string  showName()
    {
        return name;//名字只读不可写,只是输出即可
    }
    void getage(int inage)//这个是写年龄的过程
    {
        if (inage < 0 || inage>100)//进行数据检测,保留符合条件的数据
        {
            age = 0;
            cout << "Wrong age!" << endl;
            return ;//跳出函数
        }
        age = inage;
    }
    int showage()
    {
        return age;
    }
    int getpass(int pass)//写密码
    {
        password = pass;
    }
};
int main()
{
    person example;
    cout << "名字是:  " << example.showName() << endl;
    example.getage(1000);//不满足条件会输出0;
    cout << "年龄是:  " << example.showage() << endl;
    example.getage(18);
    cout << "年龄是:  " << example.showage() << endl;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值