《类和对象》PPT课件

上传人:san****019 文档编号:22602356 上传时间:2021-05-28 格式:PPT 页数:41 大小:1.32MB
返回 下载 相关 举报
《类和对象》PPT课件_第1页
第1页 / 共41页
《类和对象》PPT课件_第2页
第2页 / 共41页
《类和对象》PPT课件_第3页
第3页 / 共41页
点击查看更多>>
资源描述
参 考 : C+程 序 设 计 教 程 p106p110第 六 讲 类 和 对 象 (5) C+ 本 次 议 题对 象 数 组对 象 及 对 象 成 员 与 指 针q指 向 对 象 的 指 针qthis指 针q对 象 的const指 针对 象 引 用 及 对 象 的 常 引 用对 象 作 为 函 数 参 数 C+对 象 数 组回 忆 我 们 曾 经 学 过 的 数 组int iarr3;struct student sarr3;int *p3;int (*p)3)5;void (*p5)( int x,int y );类 型 相 同 的变 量 的 集 合 C+对 象 数 组1、 概 念 : 如 果 数 组 元 素 都 为 类 类 型 , 我 们 把 这 样 的 数 组 成为 对 象 数 组string arr9; C+2、 声 明 :对 象 数 组类 名 数 组 名元 素 个 数;类 名 数 组 名行 数列 数;new 类 名元 素 个 数;new 类 名行 数列 数;多 维 数 组 的 格式 与 此 类 似 C+对 象 数 组3、 初 始 化 :回 忆 内 置 类 型 数 组 的 初 始 化方 式 例栈 区全 局 区 全 部int a3 = 1,2,3 ;部 分int a3 = 1,2 ;省 略 长 度int a = 1,2,3 ;堆 区int *p = new int3;delete p;int *p = new int3();/delete p;DEMO 9_0 C+对 象 数 组对 象 数 组 的 初 始 化方 式 例栈 区全 局 区 全 部Point arr2= Point(1,1),Point(2,2) ;部 分Point arr2 = Point(1,1) ;省 略 长 度Point arr = Point(1,1),Point(2,2);默 认Point arr3;堆 区point *p = new Point2; C+对 象 数 组注 意 堆 对 象 数 组 不 能 显 示 初 始 化Point *p = new Point3(Point(1,2),Point(2,2);一 个 数 组 元 素 就 是 一 个 对 象,数 组 元 素 引 用 成 员 的 方 法 与 对 象相 同cout getX() : getY();cout (*p).getX() : (*p).getY(); cout arr0.getX() : 成 员法 三 、 (对 象 数 组 名 +下 标 )-成 员 ( *(对 象 数 组 名 +下 标 ) ).成 员 对 象 数 组 名 下 标 .成 员 C+指 向 对 象 的 指 针9_1. .class Pointpublic: Point( double aX = 0, double aY = 0 ); Point(); double GetX(); double GetY();private: double m_dX; double m_dY;double Point:GetX() return m_dX; double Point:GetY() return m_dY; Point:Point( double aX,double aY ) m_iX = aX; m_iY = aY; cout Executing Constructor. endl;Point:Point() cout Executing Destructor. endl;int main() Point array3 = Point(3,4),Point(5,8) ; Point *p = array; for(; parray+3; p+) cout ( GetX() , (*p).GetY() ) getX(); /常 指 针 只 能 引 用 常 成 员 函 数 /指 向 常 量 的 指 针Point * const KKp2 = Point * const KKp1 = /ErrorDEMO 9_12声 明 : 与 内 置 类 型 的 const指 针 规 则 同 C+ 本 次 议 题对 象 数 组对 象 及 对 象 成 员 与 指 针q指 向 对 象 的 指 针q对 象 的const指 针qthis指 针对 象 引 用 及 对 象 的 常 引 用对 象 作 为 函 数 参 数 C+this指 针每 个 对 象 中 的 数 据 成 员 都 分 别 占 有 存 储 空 间 , 如 果 对 同一 个 类 定 义 了N个 对 象 , 则 有N组 同 样 大 小 的 空 间 以 存 放N个 对 象 中 的 数 据 成 员 , 但 是 不 同 的 对 象 都 调 用 同 一 个函 数 代 码 段 。那 么 , 当 不 同 对 象 的 成 员 函 数 引 用 成 员 员 时 , 怎 么 能 保证 引 用 的 是 指 定 对 象 的 数 据 成 员 呢 ?为 了 确 定 究 竟 是 哪 个 对 象 在 引 用 当 前 成 员 函 数 ,C+引入 了this指 针问 题 的 产 生 : C+this指 针什 么 是this指 针 :指 向 当 前 对 象 的 指 针 变 量 , 每 个 成 员 函 数 都 含有 一 个 指 向 本 类 对 象 的this指 针 。DEMO 9_2 C+this指 针对 象 在 内 存 中 分 配 空 间 的 顺 序 为 :先 定 义 的 对 象 占 高 字 节 , 后 定 义 的 对 象 占 低 字 节 C+this指 针注 意 :引 用 成 员 函 数 时 , 在 成 员 函 数 的 参 数 表 中 会 自 动 添 加 一 个该 对 象 的 指 针a1.Print( 系 统 会 为 每 个 一 成 员 函 数 自 动 添 加 一 个this指 针void A:Print( A *this ) this指 针 不 能 显 示 的 定 义 , 我 们 只 能 使 用 它 , 通 常 如 果 希望 成 员 函 数 返 回 本 类 对 象 或 者 本 对 象 地 址 时 显 示 的 使 用this指 针this指 针 主 要 用 于 运 算 符 重 载 DEMO string C+this指 针如 果 成 员 函 数 返 回 本 类 对 象 的 引 用 或 指 针 则 访 问 成 员 的方 式 有 些 特 殊class Atestpublic: Atest return *this; Atest *print2( ) cout print2 print1( ); system(PAUSE); return 0;9_3 C+ 本 次 议 题对 象 数 组对 象 及 对 象 成 员 与 指 针q指 向 对 象 的 指 针qthis指 针对 象 引 用 及 对 象 的 常 引 用对 象 作 为 函 数 参 数 C+对 象 引 用 及 对 象 的const引 用int ival = 3;int const int const int kival = 3;int /ERRORconst int const int 1、 回 忆 内 置 类 型 的 引 用const引 用可 以 指 向 字面 值 常 量 C+2、 对 象 的 引 用 :与 内 置 类 型 引 用 语 法 规 则 类 似对 象 引 用 及 对 象 的 const 引 用class Testpublic: Test(int arg = 0) m_iVal = arg; int get() return m_iVal private: int m_iVal;int main() Test obj; Test /对 象 引 用 const Test cout kref.get();/Error const Test kobj; Test /Error const Test const Test *p = return 0;常 对 象 、 常 指 针 、常 引 用 、 只 能 引 用常 成 员 常 对 象 只 能 被 指 向常 量 的 指 针 或 常 引用 指 向 C+对 象 引 用 及 对 象 的const 引 用. .Point p1(10,20),p2(30,40);Point void f() cout p1= ( p1.GetX() , p1.GetY() ); cout p2= ( p2.GetX() , p2.GetY() ); cout r= ( r.GetX() , r.GetY() ) endl;int main() cout original p1,p2,pr endl; f(); r = p2; cout after pr=p2, p1,p2,pr: endl; f(); r = Point(100,200); cout after pr=Point(100,200), p1,p2,pr: endl; f(); return 0;9_4 C+对 象 引 用 及 对 象 的 const 引 用 C+ 本 次 议 题对 象 数 组对 象 及 对 象 成 员 与 指 针对 象 引 用 及 对 象 的 常 引 用对 象 与 函 数 参 数q对 象 作 函 数 参 数q对 象 指 针 作 函 数 参 数q对 象 引 用 做 函 数 参 数 C+对 象 作 为 函 数 参 数void swap(int ax, int ay) int temp=0; temp = ax; ax = ay; ay = temp;int main() int ival1 = 3,ival2 = 5; swap(ival1,ival2); return 0;1、 变 量 作 为 函 数 参 数l形 参 开 辟 内 存 单 元 , 值 传 递3 5axayival1ival2 C+对 象 作 为 函 数 参 数void swap(Point arg1,Point arg2) Point temp=0; temp = arg1; arg1 = arg2; arg2 = temp;int main() Point obj1(1,1),obj2(2,2); swap(obj1, obj2); return 0;2、 对 象 作 为 函 数 参 数形 参 开 辟 内 存 单 元 , 值 传 递调 用 拷 贝 构 造 函 数arg1obj1obj2arg2特 点 : 值 传 递 , 开 销 大 C+对 象 作 为 函 数 参 数DEMO 9_8 C+ 本 次 议 题对 象 数 组对 象 及 对 象 成 员 与 指 针对 象 引 用 及 对 象 的 常 引 用对 象 与 函 数 参 数q对 象 作 函 数 参 数q对 象 指 针 作 函 数 参 数q对 象 引 用 做 函 数 参 数 C+对 象 指 针 作 为 函 数 参 数void swap(int *p1, int*p2) int temp = 0; temp = *p1; *p1 = *p2; *p2 = temp;int main() int ival1 = 3,ival2 = 5; swap( return 0;1、 回 忆 指 针 变 量 作 为 函 数 参 数p1p2 temp = *p1; *p1 = *p2; *p2 = temp;int main() Point obj1(3),obj2(5); swap( return 0; C+对 象 指 针 作 为 函 数 参 数DEMO 9_9 C+ 本 次 议 题对 象 数 组对 象 及 对 象 成 员 与 指 针对 象 引 用 及 对 象 的 常 引 用对 象 与 函 数 参 数q对 象 作 函 数 参 数q对 象 指 针 作 函 数 参 数q对 象 引 用 做 函 数 参 数 C+对 象 引 用 做 函 数 参 数void swap(int temp = r1; r1 = r2; r2 = temp;int main() int ival1(3),ival2(5); swap(ival1, ival2); return 0;3 5r1 r2obj1 obj21、 回 忆 变 量 引 用 作 为 函 数 参 数形 参 不 开 辟 内 存 , 址 传 递 C+对 象 引 用 做 函 数 参 数2、 对 象 引 用 作 为 函 数 参 数形 参 不 开 辟 内 存 , 址 传 递不 会 调 用 拷 贝 构 造 函 数推 荐void swap(Point temp = r1; r1 = r2; r2 = temp;int main() Point obj1(3),obj2(5); swap(obj1, obj2); return 0;r1 r2obj1 obj2 C+对 象 引 用 做 函 数 参 数DEMO 9_10 C+内 容 小 结对 象 数 组对 象 及 对 象 成 员 与 指 针q指 向 对 象 的 指 针qthis指 针q对 象 的const指 针对 象 引 用 及 对 象 的 常 引 用对 象 作 为 函 数 参 数 C+
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!