C++ 数据抽象.ppt
文本预览下载声明
数据抽象 第三章 回顾 引用 默认参数 内联函数 函数重载 目标 类 各种各样的成员,各种各样的权限 对象 如何申明对象 如何操作对象 类 定义数据的类型以及操作这些数据的函数 类的实例称为对象 类中的变量和函数称为成员 私有和公有 2-1 类成员可以在类的公有或者私有部分声明 数据成员通常在私有部分中声明 在公有部分中声明的成员可以被该类外部的函数访问 公有部分构成类的接口 私有和公有 2-2 无法从类的外部访问私有数据 其他类的私有数据对于当前类也是隐藏的 const成员变量 常量的值在程序的执行期间不会改变 常量必须初始化 const int num=100; num = 200; //错误 num ++; //错误 const char *pr=a; *pr=200(错误) char * const pr=a; pr=b(错误) class A{ private: int a; const b; public: A():b(2)//const成员函数需要在构造函数中初始化 { a=3; } 成员函数 2-1 类的函数称为成员函数 成员函数通常放在类的公有部分 必须定义返回值及参数列表 例如 void setdate(int, int, int); 成员函数 2-2 成员函数可以有局部变量、参数等 成员函数不应与数据成员同名 调用成员函数 2-1 通过调用成员函数与对象通信 object1.member_function1(200); object1.member_function2(); 调用成员函数是操作特定的对象,而不是类 使圆点操作符与特定对象关联 调用成员函数 2-2 访问类的成员函数的一般语法: class_object.function_member(); 作用域 2-1 使用作用域解析操作符(::)在类外定义成员函数 return_type class_name::member_functions (arg1, arg2,..,argn) {} 参数的类型必须与声明的类型完全匹配 作用域 2-2 作用域操作符左侧是类名 将函数标识为特定类的成员 如果两个变量有不同的用途,它们的名称应该反映出这个区别. #include “stdio.h” Int age=5; Void main() { int age =6; Coutageendl; //局部变量覆盖全局变量。打印的是局部变量 Cout::ageendl; //打印全局变量 } 作用域表 构造函数 4-1 自动初始化对象的特殊的成员函数 与所属的类同名 可以在类中声明并定义构造函数,或在类中声明而在外部定义 构造函数 4-2 构造函数没有返回类型 默认构造函数是不带任何参数的构造函数 class username { public: username(); //构造函数 }; username::username() { } 构造函数 4-3 class date{ int month, day, year; public: date() //默认构造函数 {day=1; month=1; year=1999;} date(int x) //仅指定日 {day=x; month=1; year=1999;} date(int x, int y, int z) //指定年月日 {day=x; month=y; year=z;} }; 构造函数 4-4 编译器根据参数调用不同的构造函数 date now; date today(4); date all(23,3,1998); 析构函数 在对象销毁时自动调用的成员函数 编译器会生成对析构函数的调用 与类同名,但是在函数名前有个波浪号 (~) 析构函数没有返回类型,也不带参数 class username { public: ~username(); //析构函数 }; 对象 每个对象对类中的数据成员都有其自己的副本 给定类的所有对象都使用相同的成员函数,保存在代码区。 在定义每个对象时数据就会存入内存,所以每个对象都有一个数据集,保存在数据区 对象声明 This指针——一个问题 Class animal{ int lifeCycle; public: animal(int l=0){ lifeCycle=l;//编译器在执行这个构造函数的时候如何确定lifeCycle是谁的属性? }
显示全部