~May~ 发表于 2025-2-18 22:57:50

类是对象的集合,对象是类的个体

本帖最后由 ~May~ 于 2025-2-20 20:00 编辑

#include <iostream>

using namespace std;

//类是对象的集合,对象是类的个体

//具有特定的功能,能够解决特定问题的实体就是一个对象,而由若干个具有相同的特征和行为的对象组成的集合就是一个类,
// 在类中写所有的对象共有的特征和行为,其中特征使用变量来定义,在这里称为“属性”;行为使用函数来表示。

//访问权限有三种:用来修饰属性、行为可以在什么位置访问的
//private:私有权限、只能够在当前的类中访问,其它位置不可访问
//protected:保护权限、类外不能访问,可以在当前类和子类中访问
//public:公开权限、可以在任意的位置进行访问

class Person {
//C++中类的属性和行为,默认都是私有(private)的, 如果需要在类外进行访问,需要修改权限为public
public:
        string name;
        int age;
        string gender;
        int score;
       
        void eat(){
                cout << "人类喜欢干饭" << endl;
        }

        void sleep() {
                cout << "人类也喜欢睡觉" << endl;
        }

};

int main() {

        //创建对象:从一个类中找到一个个体
        Person xiaoming = Person();

        //person xiaozhangd等价于person xiaozhang=pengson()
        Person xiaozhang;
        //new在堆上开辟空间,无new在栈上开辟空间
        Person* xiaoli = new Person();

        // 创建对象的适合,需要在内存中开辟空间
        //如果类中是有属性的,所有的属性占用的空间大小的和
        //如果类中是没有属性的,对象占用的空间大小不是0而是1
        cout << sizeof(xiaoming) << endl;

        //成员访问:访问类中的成员(属性、函数)
        //需要使用对象访问
        xiaoming.name = "xiaoming";
        xiaoming.age = 19;
        xiaoming.gender = "male";
        xiaoming.score = 100;
        cout << xiaoming.name << endl;
        cout << xiaoming.age << endl;
        cout << xiaoming.gender << endl;
        cout << xiaoming.score << endl;
        xiaoming.eat();
        xiaoming.sleep();

        //如果是一个对象指针的话,可以先通过*找到堆空间,再通过.访问属性
        (*xiaoli).name = "xiaoli";
        (*xiaoli).age = 18;
        (*xiaoli).gender = "male";
        (*xiaoli).score = 100;
        cout << (*xiaoli).name << endl;

        //在c++中,直接将*寻堆空间,再访问属性的写法,简化成->
        cout << xiaoli->name << endl;
        cout << xiaoli->age << endl;
        cout << xiaoli->gender << endl;
        cout << xiaoli->score << endl;
        xiaoli->eat();
        xiaoli->sleep();

        return 0;
}

FishC 发表于 2025-2-18 22:58:03

代码有点不完整,下面是修复后的完整代码示例,并对其进行简单解读:


// 类的基础概念示例
#include <iostream>
#include <string> // 引入字符串库

using namespace std;

// 定义一个Person类
class Person {
    // 默认情况下,C++中的属性和行为都是私有的 (private)
public:
    // 类的属性 (特征)
    string name;
    int age;
    string gender;
    int score;

    // 类的行为 (方法)
    void eat() {
      cout << name << " is eating." << endl;
    }

    void study() {
      cout << name << " scored " << score << " points in the study." << endl;
    }
};

int main() {
    // 创建Person类的一个对象
    Person person1;

    // 设置对象的属性
    person1.name = "Alice";
    person1.age = 20;
    person1.gender = "Female";
    person1.score = 95;

    // 调用对象的方法
    person1.eat();
    person1.study();

    return 0;
}


代码解读:

[*] 类和对象的关系: 类是对象的模板或蓝图,描述了对象的共同特性和行为;对象是类的一个具体实例。
[*] 访问权限: 在Person类中,使用了 public 关键字将属性和方法公开,以便在类外部能够访问。
[*] 行为和特征: 属性如 name、age 等表示特征,方法如 eat、study 表示行为。
[*] main函数: 通过 Person person1; 创建了一个对象,并对其属性赋值和调用行为方法。


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ydwb 发表于 2025-2-19 07:36:41

类是对象的模板或蓝图,描述了对象的共同特性和行为;对象是类的一个具体实例。
页: [1]
查看完整版本: 类是对象的集合,对象是类的个体