C++类详解:构造与析构、成员函数与封装

需积分: 11 4 下载量 192 浏览量 更新于2024-09-10 收藏 5KB TXT 举报
"C++类的总结" 在C++编程语言中,类是核心特性之一,它为对象导向编程(OOP)提供了基础。C++是在C语言的基础上扩展的,引入了类、继承、多态等面向对象的概念,使得程序设计更加灵活和结构化。 1. **C++ 类的定义与作用** - C++类是一种数据结构,用于封装数据(成员变量)和操作这些数据的方法(成员函数)。类是创建对象的蓝图,它定义了一组特性和行为。 - 在类中,数据成员(变量)可以声明为`public`、`protected`或`private`,以控制对它们的访问权限。`public`成员可以从任何地方访问,`protected`成员仅限于类自身和其派生类,而`private`成员只能在类内部访问。 2. **构造函数与析构函数** - 构造函数(如`Person()`)是类的一个特殊方法,用于初始化新创建的对象。当对象被创建时,构造函数自动调用,确保对象以正确的状态开始其生命周期。 - 析构函数(如`~Person()`)是另一个特殊成员函数,用于在对象生命周期结束时执行清理工作,例如释放动态分配的内存。 3. **成员函数与友元** - 成员函数(如`void Run()`)是类的一部分,用于操作类的成员变量。`void Run()`在此例中定义了一个行为,表示人正在跑步。 - 友元(friend)是一个可以访问类的私有和保护成员的非成员函数或类。这里没有显示友元的使用,但在需要跨访问权限边界协作时,友元是必要的。 4. **指针与动态内存管理** - 在示例中,`PERSON* NewPerson()`函数动态地分配了一个`PERSON`类型的对象,并返回指向它的指针。这是通过`malloc()`函数完成的,它从堆中分配内存。 - `PERSON* pObj = NULL;`声明一个指针并将其初始化为NULL,这是良好的编程实践,以避免未初始化的指针问题。 - `pObj->RunFun = Run;`展示了如何将函数指针赋值给类成员,使得对象能够通过成员函数指针调用外部定义的函数。 - `DeletePerson()`函数使用`free()`来释放由`NewPerson()`分配的内存,防止内存泄漏。 5. **typedef 和 结构体** - `typedef`关键字用于为已存在的类型创建一个新的名称。在本例中,`typedef void(*pFun)() PFUN_RUN;`定义了一个新的类型`PFUN_RUN`,它是一个无参数无返回值的函数指针。 - `typedef struct_PERSON {...} PERSON;`创建了一个结构体类型`PERSON`,使得我们可以用更易读的`PERSON`代替`struct_PERSON`来声明变量。 6. **对象实例化与调用成员** - `PERSON* pPersonObj = NewPerson(25, "xiaoming");`实例化了一个名为"xiaoming",年龄为25的新对象,并将其存储在指针`pPersonObj`中。 - `pPersonObj->RunFun();`通过成员函数指针调用`Run()`函数,实现了对对象行为的调用。 7. **面向对象特性** - 隐藏实现细节(封装):通过访问修饰符控制成员的可见性。 - 继承(Inheritance):一个类可以从另一个类派生,继承其属性和行为。 - 多态(Polymorphism):不同对象可以响应相同的函数调用,但执行不同的操作。在本例中,虽然未直接展示,但可以通过虚函数和指针实现多态。 总结起来,C++类是构建复杂软件系统的基础,提供了数据抽象、封装、继承和多态等面向对象特性。理解和熟练使用类是成为C++程序员的关键。