文档详情

第3章-C++-类和对象.pptx

发布:2018-12-15约7.36千字共47页下载文档
文本预览下载声明
第3章 类与对象3.1 类3.2 对象3.3 构造函数与析构函数3.4 this指针3.5 类的静态成员3.6 友元3.7 类的指针成员3.1 类3.1.1类的定义3.1.2类成员的访问控制3.1.3成员函数的实现3.1.1 类的定义类:是一种用户自己定义的数据类型,不仅可以有数据(成员变量/属性),而且可以有函数(成员函数/方法)。class 类名 {public/protected/private: 成员变量 = 初值; 成员函数;};3.1.1 类的定义C++11中,可在定义类的成员变量时对其进行初始化。class Student {public: string name{zhang3}; // 或 string name = zhang3; unsigned int age{18}; // 或 unsigned int age = 18;};3.1.2 类成员的访问控制访问控制用关键字public、protected和private控制类中成员的可访问性。public:公有,类外可以访问protected:保护,类内和子类可以访问private:私有,类内(成员函数)才能访问所有成员缺省定义为private的。3.1.2类成员的访问控制class Point { public: void setXY(int x, int y); private: int x, y;};……Point p1;p1.setXY(34, 56); p1.x = 34; 3.1.3 成员函数的实现成员函数的实现,可以放在类体内,也可以放在类体外,但必须在类体内给出函数原型说明。成员函数内如果不修改成员变量,可在函数声明后加上关键字 const。放在类体内定义的函数被默认为内联函数,而放在类体外定义的函数是一般函数,如果要定义为内联函数则需在前面加上关键字 inline。 3.1.3 成员函数的实现在类体外定义成员函数的一般形式为:返回类型 类名::成员函数名(形式参数列表){ 函数体;}“::”称为作用域运算符,“类名::”表明其后的成员函数是在这个类中的。 3.1.3 成员函数的实现class Person {public: void introduce() const; // 成员函数声明private: string name; unsigned int age;};void Person::introduce() { // 成员函数实现 cout Hello, my name is name and I\m age years old. endl;}3.1.3 成员函数的实现在大型程序设计中,C++的类结构常常被分成两部分:一部分是类的接口,另一部分是类的实现。在类的接口中仅包括类的所有成员变量以及成员函数的声明,放在头文件中,供类的使用者共享。类的实现则放在与头文件同名的源文件中,对类的使用者隐藏。3.1.3 成员函数的实现类定义(接口)类的使用#include Person.hPerson.h类(成员函数)的实现#include Person.hPerson.cpp3.2 对象3.2.1对象的声明3.2.2对象的创建和销毁3.2.3对象成员的访问3.2.1 对象的声明类实际上是由一个自定义的类型,称为类类型。类类型的变量称为对象。对象的声明与普通变量相似,一般格式为:类名 对象1, 对象2, ……;例如,声明类Point的对象、指针、数组和引用:Point p1, p2, *pdate, p[3], rp = p1; 3.2.2 对象的创建和销毁创建(实例化)对象主要有静态分配和动态分配两种方式。静态分配方式:在声明对象时分配存储空间,对象的生命期结束时自动收回所分配存储空间。即直接定义类变量。例如:Point p1, p2, p[3]; 即创建对象p1,p2和对象数组p。3.2.2 对象的创建和销毁动态分配方式:建立新的对象时,使用运算符new为其分配内存空间;对象销毁时,使用运算符delete来释放它所占用的内存空间。即定义类对象指针的方式。例如:Point *pdate = nullptr; 只声明了对象指针pdate,并没有创建pdate所指向的对象,为空指针,不能使用。Point *pdate = new Point; //分配内存空间后才能使用3.2.3 对象成员的访问用成员选择运算符“.”访问对象的成员:对象名.数据成员名;对象名.成员函数名(实际参数列表);用成员选择运算符“.”访问对象引用的成员:对象引用名.数据成员名;对象引用名.成员函数名(实际参数列表);3.2.3 对象成员的访问用成员选择运算符“-”访问对象指针的成员: 对象指针名-数据成员名;对象
显示全部
相似文档