C++(4) 面向对象&类、权限修饰符

面向对象

1. 面向对象概述

C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。

1.1 面向对象生活案例

【找合适的人,做合适的事】

	假设你正在建造一座房子。在面向对象编程术语中,你可以创建“房子”类,该类包含了所有房子的通用属性和行为。
属性:
	颜色:定义房子的外观颜色。
	面积:定义房子的总面积。
	房间数:定义房子内部的房间数量。
行为:
	建造:创建房子并设置属性值。
	粉刷:选择一种颜色,并将房子的颜色属性更改为所选颜色。
	改变面积:根据需要更改房子的总面积。
	添加房间:根据需要增加房子的房间数量。
    此时,你可以通过实例化“房子”类来创建具体的房子对象。例如,你可以创建一个红色、面积为100平方米、有三个房间的房子对象。
	这个案例中的“房子”类就是一个面向对象编程的示例。它将类作为一个模板,将房子的属性和行为封装在一起。通过实例化该类,我们可以创建多个具有不同属性的房子对象,并通过调用对象的方法来执行相应的行为。这种方式使得代码可重用、易于维护,并且可以根据需要进行扩展。
1.2 类&对象

类是 C++的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,是一种用户自定义的数据类型,它是一种封装了数据和函数的组合。类中的数据称为成员变量,函数称为成员函数。类可以被看作时一种模板,可以用来创建具有相同属性和行为的多个对象。

对象
任正非、雷布斯、乔布斯
黑猫警长、Tom 猫
神犬小七、哮天犬、糯米
2. C++ 中的面向对象
2.1 C++ 定义类的格式

【权限修饰符】三个关键词

权限修饰符类内子类类外
public[公开]
protected[受保护]×
private[私有]××

C++ 定义类的格式

class 类名
{
	成员变量; ==> 属性描述
	成员函数; ==> 行为描述
	构造函数和析构函数; ==> 【小重点】
}
2.2 C++ 类定义和创建对象案例
#include <iostream>

using namespace std;

class Person 
{
// public 关键字,表示以下内容都是 public 修饰,类内、类外、子类都可以使用
public:
    // 成员变量,对应的【属性描述】
    int id;
    char * name;
    int age;

    void eat(string food)
    {
        cout << "今天中午吃" << food << endl;
    }

    void sleep()
    {
        // 成员变量一般情况,可以直接在类内的成员函数使用
        cout << name << "被床封印了" << endl;
    }

    void coding()
    {
        cout << "打代码" << endl;
    }
};

int main(int argc, char const *argv[])
{
    // 第一种用法,定义 类变量
    Person p;

    p.id = 1;
    p.name = "James";
    p.age = 15;

    cout << "ID : " << p.id << endl;
    cout << "Name : " << p.name << endl;
    cout << "Age : " << p.age << endl;

    p.eat("混沌");
    p.sleep();
    p.coding();
    
    cout << "------------------------------" << endl;
    
    // 第二种用法 new 对象/实例化对象
    Person *p1 = new Person;

    p1->id = 1;
    p1->name = "Mary";
    p1->age = 32;

    cout << "ID : " << p1->id << endl;
    cout << "Name : " << p1->name << endl;
    cout << "Age : " << p1->age << endl;

    p1->eat("番茄炒蛋");
    p1->sleep();
    p1->coding();

    delete p1;

    return 0;
}
2.3 权限修饰符案例【public protected private】
#include <iostream>

using namespace std;

class Person
{
public:
    string nickName;
    void eat()
    {
        cout << nickName << "在切藕" << endl;
    }
protected:
    string name;
    void sleep()
    {
        cout << nickName << "在切藕" << endl;
        cout << name << "快睡着了" << endl;
    }
private:
    int age;
    void test()
    {
        cout << "private 修饰的私有化函数" << age << nickName << name << endl;
    }
};

int main(int argc, char const *argv[])
{
    Person * p = new Person;
    p->nickName = "Jerry";
    p->eat();

    /*
    成员 "Person::name" (已声明 所在行数:14) 不可访问
    函数 "Person::sleep" (已声明 所在行数:15) 不可访问

    name 成员变量和 sleep 成员函数 是 protected 修饰,类外无法使用
    */
    // p->name = "Marry";
    // p->sleep();

    /*
    成员 "Person::age" (已声明 所在行数:21) 不可访问
    函数 "Person::test" (已声明 所在行数:22) 不可访问

    age 成员变量和 test 成员函数都是 private 修饰,类外无法使用
    */
    // p->age = 16;
    // p->test();
    
    delete p;
    return 0;
}
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值