c++基础入门,第一阶段:夯实基础(2.类与对象)

第2课:类与对象

目标:

  1. 理解类(Class)与对象(Object)的概念。

  2. 掌握如何定义类、创建对象。

  3. 学会使用构造函数(Constructor)和析构函数(Destructor)。

  4. 理解访问权限控制(publicprivateprotected)。


1. 类与对象的基本概念

  • 类(Class):类是对象的蓝图或模板,定义了对象的属性和行为。例如,“汽车”类可以定义颜色、品牌等属性,以及启动、刹车等方法。

  • 对象(Object):对象是类的实例。例如,一辆红色的丰田汽车是“汽车”类的一个具体对象。


2. 类的定义与对象的创建

定义类的语法:
class 类名 {
public:     // 公有成员,外部可以直接访问
    // 成员变量(属性)
    // 成员函数(方法)
private:    // 私有成员,仅类内部可访问
    // 成员变量或函数
};
示例:定义一个简单的 Student 类
#include <iostream>
#include <string>
using namespace std;

class Student {
public:
    // 成员变量(属性)
    string name;
    int age;

    // 成员函数(方法)
    void introduce() {
        cout << "我叫" << name << ",今年" << age << "岁。" << endl;
    }
};

int main() {
    // 创建对象
    Student stu1;
    stu1.name = "张三"; // 访问公有成员变量
    stu1.age = 18;
    stu1.introduce();   // 调用公有成员函数

    return 0;
}
输出:
我叫张三,今年18岁。

3. 构造函数(Constructor)

构造函数是一种特殊的成员函数,在对象创建时自动调用,用于初始化对象的成员变量。

  • 构造函数的名称与类名相同。

  • 构造函数没有返回类型(包括 void)。

  • 可以重载(定义多个不同参数的构造函数)。

示例:带构造函数的 Student 类
class Student {
public:
    string name;
    int age;

    // 默认构造函数(无参数)
    Student() {
        name = "未知";
        age = 0;
    }

    // 带参数的构造函数
    Student(string n, int a) {
        name = n;
        age = a;
    }

    void introduce() {
        cout << "我叫" << name << ",今年" << age << "岁。" << endl;
    }
};

int main() {
    Student stu1;               // 调用默认构造函数
    Student stu2("李四", 20);  // 调用带参数的构造函数

    stu1.introduce(); // 输出:我叫未知,今年0岁。
    stu2.introduce(); // 输出:我叫李四,今年20岁。
    return 0;
}

4. 析构函数(Destructor)

析构函数在对象销毁时自动调用,通常用于释放资源(如内存、文件句柄等)。

  • 析构函数的名称是 ~类名

  • 没有参数和返回值。

  • 一个类只能有一个析构函数。

示例:析构函数的使用
class Student {
public:
    Student() {
        cout << "对象被创建" << endl;
    }

    ~Student() {
        cout << "对象被销毁" << endl;
    }
};

int main() {
    Student stu1; // 构造函数被调用
    return 0;
} // stu1 超出作用域,析构函数被调用
输出:
对象被创建
对象被销毁

5. 访问权限控制

C++ 通过 publicprivateprotected 控制成员的访问权限:

  • public:公有成员,类外部可以直接访问。

  • private:私有成员,仅类内部或友元(friend)可访问。

  • protected:受保护成员,类似私有成员,但允许子类访问(后续讲继承时会详细说明)。

示例:使用 private 封装数据
class Student {
private:
    string name;
    int age;

public:
    // 提供公有方法访问私有成员
    void setName(string n) {
        name = n;
    }

    void setAge(int a) {
        if (a >= 0) { // 可加入数据校验
            age = a;
        }
    }

    void introduce() {
        cout << "我叫" << name << ",今年" << age << "岁。" << endl;
    }
};

int main() {
    Student stu;
    stu.setName("王五");
    stu.setAge(22);
    stu.introduce();

    // stu.age = -10; // 错误!私有成员不能在类外部直接访问
    return 0;
}
示例代码:
#include <iostream>
using namespace std;

class Rectangle {
private:
    double width;
    double height;

public:
    void setWidth(double w) {
        width = w;
    }

    void setHeight(double h) {
        height = h;
    }

    double getArea() {
        return width * height;
    }
};

int main() {
    Rectangle rect;
    rect.setWidth(5.0);
    rect.setHeight(3.0);
    cout << "面积: " << rect.getArea() << endl; // 输出 15
    return 0;
}

总结

  • 是对象的模板,对象是类的实例。

  • 构造函数用于初始化对象,析构函数用于清理资源。

  • 通过 publicprivateprotected 控制成员访问权限,实现封装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值