C++ Primer Plus:类与对象详解

需积分: 1 2 下载量 43 浏览量 更新于2024-07-14 收藏 721KB PPT 举报
"C++ Primer Plus professional 中关于类和对象的基本概念、构造函数与析构函数、内联函数、静态成员、对象数组、指向对象的指针、在函数中使用对象、this指针、指针、友元和面向对象程序设计的特点进行了深入讲解。" 在C++编程语言中,类(Class)和对象(Object)是面向对象编程的基础。类是一种用户自定义的数据类型,它允许我们封装数据和相关的操作,实现数据隐藏和模块化。对象是类的实例,它具有类定义的属性和行为。 **类和对象的基本概念** 类是对象的蓝图,它定义了一组特性和行为。在类中,数据被称为数据成员,而与这些数据相关的操作被称为成员函数。类的定义包括以下部分: ```cpp class 类名 { 访问修饰符 数据成员; 访问修饰符 成员函数; }; ``` 访问修饰符有三种:`private`(私有)、`public`(公有)和`protected`(保护)。私有成员只能在类内部访问,公有成员可以被类内外的任何代码访问,保护成员则仅对子类可见。 **构造函数与析构函数** 构造函数是类的一个特殊成员函数,用于初始化新创建的对象。它与类名相同,没有返回类型。析构函数则用于在对象生命周期结束时清理资源,名字以波浪线`~`开头。 ```cpp class MyClass { public: MyClass() { /* 构造函数 */ } ~MyClass() { /* 析构函数 */ } }; ``` **内联函数** 内联函数是为了提高效率,通过在调用点处展开函数体来避免函数调用开销。使用`inline`关键字声明函数为内联。 ```cpp inline void myFunction() { /* 函数体 */ } ``` **静态成员** 静态成员属于类本身而不是类的任何特定对象,它们共享同一份存储空间。静态数据成员只能访问静态成员函数,而静态成员函数不能访问非静态成员。 ```cpp class MyClass { public: static int count; // 静态数据成员 static void incrementCount() { count++; } // 静态成员函数 }; ``` **对象数组和指向对象的指针** 可以创建类对象的数组,就像创建其他类型数组一样。同时,也可以定义指向对象的指针,使用指针调用成员函数。 ```cpp MyClass objArray[3]; // 对象数组 MyClass* pObj = new MyClass(); // 指向对象的指针 ``` **在函数中使用对象** 对象可以在函数参数中传递,或者作为函数的返回值。 ```cpp void processObject(MyClass obj) { /* 使用对象 */ } MyClass createObject() { return MyClass(); } ``` **this指针** 在成员函数中,`this`是一个隐含的指针,指向调用该成员函数的对象。 ```cpp class MyClass { public: void setVal(int val) { m_val = val; } private: int m_val; }; ``` 在`setVal`函数中,`this->m_val`等价于`m_val`,`this`指针指向当前对象。 **指针** C++中的指针是一种变量,它存储内存地址。指针可以用来动态创建对象,或作为函数参数传递对象引用。 **友元** 友元函数和友元类可以访问另一个类的私有和保护成员,提供了一种打破封装的方式。 ```cpp class MyClass { friend class FriendClass; public: MyClass(FriendClass& friendObj) : m_friendObj(friendObj) {} private: FriendClass m_friendObj; }; class FriendClass { public: void operateOnFriend(MyClass& obj) { /* 友元操作 */ } }; ``` **面向对象程序设计的特点** - **封装**:封装是将数据和操作数据的方法捆绑在一起,防止外部直接访问,保证数据安全。 - **继承**:继承允许一个类(子类)从另一个类(父类)继承属性和行为,实现代码复用。 - **多态**:多态是指在不同对象上使用相同接口执行不同的操作,通常通过虚函数和纯虚函数实现。 通过理解和掌握这些概念,开发者能够有效地利用C++的面向对象特性进行软件设计和开发。