C++类的访问控制:private、public和protected

需积分: 0 2 下载量 38 浏览量 更新于2024-08-24 收藏 590KB PPT 举报
"C++的限制访问符-C++类和对象" C++的类和对象是面向对象编程的基础,其中访问修饰符起到了至关重要的角色。访问修饰符用于控制类的成员(数据成员和成员函数)的可见性和访问权限,确保代码的安全性和封装性。 1. **访问修饰符** - `public`:公共成员,可以被类的任何对象、本类或其他类的成员函数无限制地访问。这是最宽松的访问级别,通常用于定义接口或者希望外部直接使用的成员。 - `private`:私有成员,只能被类内的成员函数访问,对外部是不可见的。这是封装的重要机制,用于保护数据不被外界直接修改。 - `protected`:保护成员,可以被类的成员函数和其派生类的成员函数访问。在继承时,保护成员比私有成员更灵活,允许子类进行必要的操作。 2. **类和对象的区别** - **从认识的角度**:类是对一类具有相同特征和行为的事物的抽象,而对象是类的具体实例。例如,人是“人”类的一个对象,每个人都有自己的特征(如年龄、性别)和行为(如走路、说话)。 - **从C++语法角度**:类是一种包含数据和操作数据的函数(成员函数)的复合数据类型。对象就像定义了基本数据类型的变量,它们可以作为参数传递,存储在容器中,或者作为返回值。 3. **构造函数和析构函数** - 构造函数是类的一个特殊函数,用于在创建对象时初始化对象的数据成员。默认构造函数不需要用户定义,但可以提供自定义构造函数来执行特定的初始化操作。 - 析构函数与构造函数相反,当对象生命周期结束时自动调用,用于清理对象可能占用的资源。析构函数没有返回类型,名字前有一个波浪线(~)。 4. **静态成员** - 静态成员属于类,而不是类的任何特定对象。这意味着所有对象共享同一份静态数据,无论创建多少个对象,静态数据成员只有一份拷贝。静态成员函数不能访问非静态成员,因为它们不与特定的对象关联。 5. **友元** - 友元是非成员函数或类,被声明为友元后,可以访问类的私有和保护成员。友元机制打破了封装性,但有时是必要的,例如实现特定的算法或提高代码效率。 6. **类的定义** - 类定义包括两部分:声明(说明部分)和实现。声明部分定义类的结构,包括数据成员和成员函数的声明;实现部分则包含成员函数的定义。类的定义使用`class`关键字,访问修饰符用于控制成员的可见性。 7. **类的实例化和对象** - 定义对象类似于定义变量,对象具有类的特性,并可以通过对象访问类的成员。对象可以全局、局部或动态分配。 在C++中,使用`struct`与`class`主要区别在于默认访问级别:`struct`的成员默认为`public`,而`class`的成员默认为`private`。但两者本质上都是用于定义自定义数据类型,可以包含数据和函数成员。在面向对象编程中,更倾向于使用`class`以保持封装性。