幻灯片 1

Size: px
Start display at page:

Download "幻灯片 1"

Transcription

1 信息科学技术学院 程序设计实习 郭炜微博 刘家瑛微博 1

2 信息科学技术学院 程序设计实习 郭炜刘家瑛 虚函数和多态 (P247) 2

3 虚函数 在类的定义中, 前面有 virtual 关键字的成员函数就是虚函数 class base { virtual int get() ; int base::get() { } virtual 关键字只用在类定义里的函数声明中, 写函数体时不用 3

4 多态的表现形式一 派生类的指针可以赋给基类指针 通过基类指针调用基类和派生类中的同名虚函数时 : (1) 若该指针指向一个基类的对象, 那么被调用是基类的虚函数 ; (2) 若该指针指向一个派生类的对象, 那么被调用的是派生类的虚函数 这种机制就叫做 多态 4

5 多态的表现形式一 class CBase { public: virtual void SomeVirtualFunction() { } class CDerived:public CBase { public : virtual void SomeVirtualFunction() { } int main() { CDerived ODerived; CBase * p = & ODerived; p -> SomeVirtualFunction(); // 调用哪个虚函数取决于 p 指向哪种类型的对象 return 0; } 5

6 多态的表现形式二 派生类的对象可以赋给基类引用 通过基类引用调用基类和派生类中的同名虚函数时 : (1) 若该引用引用的是一个基类的对象, 那么被调用是基类的虚函数 ; (2) 若该引用引用的是一个派生类的对象, 那么被调用的是派生类的虚函数 这种机制也叫做 多态 6

7 多态的表现形式二 class CBase { public: virtual void SomeVirtualFunction() { } class CDerived:public CBase { public : virtual void SomeVirtualFunction() { } int main() { CDerived ODerived; CBase & r = ODerived; r.somevirtualfunction(); // 调用哪个虚函数取决于 r 引用哪种类型的对象 return 0; } 7

8 多态的简单示例 class A { public : virtual void Print( ) { cout << "A::Print"<<endl ; } class B: public A { public : virtual void Print( ) { cout << "B::Print" <<endl; } class D: public A { public: virtual void Print( ) { cout << "D::Print" << endl ; } class E: public B { virtual void Print( ) { cout << "E::Print" << endl ; }

9 int main() { A a; B b; E e; D d; A * pa = &a; B * pb = &b; D * pd = &d ; E * pe = &e; } pa->print(); // a.print() 被调用, 输出 :A::Print pa = pb; pa -> Print(); //b.print() 被调用, 输出 :B::Print pa = pd; pa -> Print(); //d. Print () 被调用, 输出 :D::Print pa = pe; pa -> Print(); //e.print () 被调用, 输出 :E::Print return 0; B E A D

10 多态的作用 在面向对象的程序设计中使用多态, 能够增强程序的可扩充性, 即程序需要修改或增加功能的时候, 需要改动和增加的代码较少

11 信息科学技术学院 程序设计实习 郭炜微博 刘家瑛微博 1

12 信息科学技术学院 程序设计实习 郭炜刘家瑛 使用多态的游戏程序实例 (P250) 2

13 游戏 魔法门之英雄无敌 游戏中有很多种怪物, 每种怪物都有一个类与之对应, 每个怪物就是一个对象 类 :CDragon 类 :CSoldier 类 CPhonex 类 :CAngel 3

14 游戏 魔法门之英雄无敌 怪物能够互相攻击, 攻击敌人和被攻击时都有相应的动作, 动作是通过对象的成员函数实现的 4

15 游戏 魔法门之英雄无敌 游戏版本升级时, 要增加新的怪物 -- 雷鸟 如何编程才能使升级时的代码改动和增加量较小? 新增类 :CThunderBird 5

16 基本思路 : 为每个怪物类编写 Attack FightBack 和 Hurted 成员函数 Attact 函数表现攻击动作, 攻击某个怪物, 并调用被攻击怪物的 Hurted 函数, 以减少被攻击怪物的生命值, 同时也调用被攻击怪物的 FightBack 成员函数, 遭受被攻击怪物反击 Hurted 函数减少自身生命值, 并表现受伤动作 FightBack 成员函数表现反击动作, 并调用被反击对象的 Hurted 成员函数, 使被反击对象受伤 6

17 基本思路 : 设置基类 CCreature, 并且使 CDragon, CWolf 等其他类都从 CCreature 派生而来 CCreature CDragon CWolf CSoldier CPhonex CAngel 7

18 非多态的实现方法 class class CCreature { protected: int npower ; // 代表攻击力 int nlifevalue ; // 代表生命值 class CDragon:public CCreature { public: void Attack(CWolf * pwolf) {... 表现攻击动作的代码 pwolf->hurted( npower); pwolf->fightback( this); } void Attack( CGhost * pghost) {... 表现攻击动作的代码 pghost->hurted( npower); pgohst->fightback( this); } 8

19 非多态的实现方法 void Hurted ( int npower) {... 表现受伤动作的代码 nlifevalue -= npower; } void FightBack( CWolf * pwolf) {... 表现反击动作的代码 pwolf ->Hurted( npower / 2); } void FightBack( CGhost * pghost) {... 表现反击动作的代码 pghost->hurted( npower / 2 ); } } 有 n 种怪物,CDragon 类中就会有 n 个 Attack 成员函数, 以及 n 个 FightBack 成员函数 对于其他类也如此 9

20 非多态的实现方法的缺点 如果游戏版本升级, 增加了新的怪物雷鸟 CThunderBird, 则程序改动较大 所有的类都需要增加两个成员函数 : void Attack( CThunderBird * pthunderbird) ; void FightBack( CThunderBird * pthunderbird) ; 在怪物种类多的时候, 工作量较大有木有!!! 10

21 多态的实现方法 // 基类 CCreature: class CCreature { protected : int m_nlifevalue, m_npower; public: virtual void Attack( CCreature * pcreature) {} virtual void Hurted( int npower) { } virtual void FightBack( CCreature * pcreature) { } 基类只有一个 Attack 成员函数 ; 也只有一个 FightBack 成员函数 ; 所有 CCreature 的派生类也是这样 11

22 多态的实现方法 // 派生类 CDragon: class CDragon : public CCreature { public: virtual void Attack( CCreature * pcreature); virtual void Hurted( int npower); virtual void FightBack( CCreature * pcreature); 12

23 多态的实现方法 void CDragon::Attack(CCreature * p) { 表现攻击动作的代码 p->hurted(m_npower); // 多态 p->fightback(this); // 多态 } void CDragon::Hurted( int npower) { 表现受伤动作的代码 m_nlifevalue -= npower; } void CDragon::FightBack(CCreature * p) { 表现反击动作的代码 p->hurted(m_npower/2); // 多态 } 13

24 多态实现方法的优势 如果游戏版本升级, 增加了新的怪物雷鸟 CThunderBird 只需要编写新类 CThunderBird, 不需要在已有的类里专门为新怪物增加 : void Attack( CThunderBird * pthunderbird) ; void FightBack( CThunderBird * pthunderbird) ; 成员函数, 已有的类可以原封不动, 没压力啊!!! 14

25 原理 CDragon Dragon; CWolf Wolf; CGhost Ghost; CThunderBird Bird; Dragon.Attack( & Wolf); //(1) Dragon.Attack( & Ghost); //(2) Dragon.Attack( & Bird); //(3) 根据多态的规则, 上面的 (1),(2),(3) 进入到 CDragon::Attack 函数后, 能分别调用 : CWolf::Hurted CGhost::Hurted CBird::Hurted void CDragon::Attack(CCreature * p) { p->hurted(m_npower); // 多态 p->fightback(this); // 多态 } 15

26 信息科学技术学院 程序设计实习 郭炜微博 刘家瑛微博 1

27 信息科学技术学院 程序设计实习 郭炜刘家瑛 更多多态程序实例 2

28 几何形体处理程序 几何形体处理程序 : 输入若干个几何形体的参数, 要求按面积排序输出 输出时要指明形状 Input: 第一行是几何形体数目 n( 不超过 100). 下面有 n 行, 每行以一个字母 c 开头. 若 c 是 R, 则代表一个矩形, 本行后面跟着两个整数, 分别是矩形的宽和高 ; 若 c 是 C, 则代表一个圆, 本行后面跟着一个整数代表其半径 若 c 是 T, 则代表一个三角形, 本行后面跟着三个整数, 代表三条边的长度 3

29 几何形体处理程序 Output: 按面积从小到大依次输出每个几何形体的种类及面积 每行一个几何形体, 输出格式为 : 形体名称 : 面积 4

30 几何形体处理程序 Sample Input: 3 R 3 5 C 9 T Sample Output Triangle:6 Rectangle:15 Circle:

31 #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; class CShape { public: virtual double Area() = 0; // 纯虚函数 virtual void PrintInfo() = 0; class CRectangle:public CShape { public: int w,h; virtual double Area(); virtual void PrintInfo(); class CCircle:public CShape { public: int r; virtual double Area(); virtual void PrintInfo(); class CTriangle:public CShape { public: int a,b,c; virtual double Area(); virtual void PrintInfo(); 6

32 double CRectangle::Area() { return w * h; } void CRectangle::PrintInfo() { cout << "Rectangle:" << Area() << endl; } double CCircle::Area() { return 3.14 * r * r ; } void CCircle::PrintInfo() { cout << "Circle:" << Area() << endl; } double CTriangle::Area() { double p = ( a + b + c) / 2.0; return sqrt(p * ( p - a)*(p- b)*(p - c)); } void CTriangle::PrintInfo() { cout << "Triangle:" << Area() << endl; } 7

33 CShape * pshapes[100]; int MyCompare(const void * s1, const void * s2); int main() { int i; int n; CRectangle * pr; CCircle * pc; CTriangle * pt; cin >> n; for( i = 0;i < n;i ++ ) { char c; cin >> c; switch(c) { case 'R': pr = new CRectangle(); cin >> pr->w >> pr->h; pshapes[i] = pr; break; 8

34 } case 'C': pc = new CCircle(); cin >> pc->r; pshapes[i] = pc; break; case 'T': pt = new CTriangle(); cin >> pt->a >> pt->b >> pt->c; pshapes[i] = pt; break; } } qsort(pshapes,n,sizeof( CShape*),MyCompare); for( i = 0;i <n;i ++) pshapes[i]->printinfo(); return 0; 9

35 int MyCompare(const void * s1, const void * s2) { double a1,a2; CShape * * p1 ; // s1,s2 是 void *, 不可写 * s1 来取得 s1 指向的内容 CShape * * p2; p1 = ( CShape * * ) s1; //s1,s2 指向 pshapes 数组中的元素, 数组元素的类型是 CShape * p2 = ( CShape * * ) s2; // 故 p1,p2 都是指向指针的指针, 类型为 CShape ** a1 = (*p1)->area(); // * p1 的类型是 Cshape *, 是基类指针, 故此句为多态 a2 = (*p2)->area(); if( a1 < a2 ) return -1; else if ( a2 < a1 ) return 1; else return 0; } 10

36 } case 'C': pc = new CCircle(); cin >> pc->r; pshapes[i] = pc; break; case 'T': pt = new CTriangle(); cin >> pt->a >> pt->b >> pt->c; pshapes[i] = pt; break; } } qsort(pshapes,n,sizeof( CShape*),MyCompare); for( i = 0;i <n;i ++) pshapes[i]->printinfo(); return 0; 如果添加新的几何形体, 比如五边形, 则只需要从 CShape 派生出 CPentagon, 以及在 main 中的 switch 语句中增加一个 case, 其余部分不变有木有! 11

37 用基类指针数组存放指向各种派生类对象的指针, 然后遍历该数组, 就能对各个派生类对象做各种操作, 是很常用的做法

38 多态的又一例子 class Base { public: void fun1() { fun2(); } virtual void fun2() { cout << "Base::fun2()" << endl; } class Derived:public Base { public: virtual void fun2() { cout << "Derived:fun2()" << endl; } int main() { Derived d; Base * pbase = & d; pbase->fun1(); return 0; } 输出 : Derived:fun2() 13

39 多态的又一例子 class Base { public: void fun1() { this->fun2(); } //this 是基类指针,fun2 是虚函数, 所以是多态 virtual void fun2() { cout << "Base::fun2()" << endl; } class Derived:public Base { public: virtual void fun2() { cout << "Derived:fun2()" << endl; } int main() { Derived d; Base * pbase = & d; pbase->fun1(); return 0; } 输出 : Derived:fun2() 在非构造函数, 非析构函数的成员函数中调用虚函数, 是多态!!! 14

40 构造函数和析构函数中调用虚函数 在构造函数和析构函数中调用虚函数, 不是多态 编译时即可确定, 调用的函数是自己的类或基类中定义的函数, 不会等到运行时才决定调用自己的还是派生类的函数 15

41 class myclass { public: virtual void hello(){cout<<"hello from myclass"<<endl; virtual void bye(){cout<<"bye from myclass"<<endl;} class son:public myclass{ public: void hello(){ cout<<"hello from son"<<endl; son(){ hello(); ~son(){ bye(); int main(){ grandson gson; son *pson; pson=&gson; pson->hello(); // 多态 return 0; } 派生类中和基类中虚函数同名同参数表的函数, 不加 virtual 也自动成为虚函数 class grandson:public son{ public: 结果 : void hello(){cout<<"hello from grandson"<<endl; hello from son void bye() { cout << "bye from grandson"<<endl;} grandson(){cout<<"constructing grandson"<<endl; ~grandson(){cout<<"destructing grandson"<<endl; constructing grandson hello from grandson destructing grandson bye from myclass 16

42 信息科学技术学院 程序设计实习 郭炜微博 刘家瑛微博 1

43 信息科学技术学院 程序设计实习 郭炜刘家瑛 多态的实现原理 2

44 思考 多态 的关键在于通过基类指针或引用调用一个虚函数时, 编译时不确定到底调用的是基类还是派生类的函数, 运行时才确定 ---- 这叫 动态联编 动态联编 底是怎么实现的呢? 3

45 提示 : 请看下面例子程序 : class Base { public: int i; virtual void Print() { cout << "Base:Print" ; } class Derived : public Base{ public: int n; virtual void Print() { cout <<"Drived:Print" << endl; } int main() { Derived d; cout << sizeof( Base) << ","<< sizeof( Derived ) ; return 0; } 程序运行输出结果 : 8, 12 为什么都多了 4 个字节? 4

46 多态实现的关键 --- 虚函数表 每一个有虚函数的类 ( 或有虚函数的类的派生类 ) 都有一个虚函数表, 该类的任何对象中都放着虚函数表的指针 虚函数表中列出了该类的虚函数地址 多出来的 4 个字节就是用来放虚函数表的地址的 pbase Base b pointer for vtable i Base vtable pointer for Base::Print() Base 类的其它虚函数地址 5

47 多态实现的关键 --- 虚函数表 pderived Derived d pointer for vtable i n pbase = pderived; pbase->print(); Derived vtable pointer for Derived::Print() Derived 类的其它虚函数地址 多态的函数调用语句被编译成一系列根据基类指针所指向的 ( 或基类引用所引用的 ) 对象中存放的虚函数表的地址, 在虚函数表中查找虚函数地址, 并调用虚函数的指令 6

48 1 虚析构函数 郭炜刘家瑛 北京大学程序设计实习

49 虚析构函数 问题 : class CSon{ public: ~CSon() { class CGrandson : CSon{ public: ~CGrandson() { } int main(){ CSon *p = new CGrandson; delete p; return 0; } 2

50 虚析构函数 通过基类的指针删除派生类对象时 只调用基类的析构函数 Vs. 删除一个派生类的对象时 先调用派生类的析构函数 再调用基类的析构函数 3

51 虚析构函数 解决办法 : 把基类的析构函数声明为 virtual 派生类的析构函数 virtual 可以不进行声明 通过基类的指针删除派生类对象时 首先调用派生类的析构函数 然后调用基类的析构函数 类如果定义了虚函数, 则最好将析构函数也定义成虚函数 Note: 不允许以虚函数作为构造函数 4

52 class son{ public: ~son() { cout<<"bye from son"<<endl; class grandson : public son{ public: ~grandson(){ cout<<"bye from grandson"<<endl; int main(){ son *pson; pson=new grandson; delete pson; return 0; } 输出结果 : bye from son 没有执行 grandson::~grandson()!!! 5

53 class son{ public: virtual ~son() { cout<<"bye from son"<<endl; class grandson : public son{ public: ~grandson(){ cout<<"bye from grandson"<<endl; int main() { son *pson; pson= new grandson; } delete pson; return 0; 输出结果 : bye from grandson bye from son 执行 grandson::~grandson(), 引起执行 son::~son()!!! 6

54 1 纯虚函数和抽象类 郭炜刘家瑛 北京大学程序设计实习

55 纯虚函数 纯虚函数 : 没有函数体的虚函数 class A { private: int a; public: virtual void Print( ) = 0 ; // 纯虚函数 void fun() { cout << fun ; } 2

56 抽象类 抽象类 : 包含纯虚函数的类 只能作为基类来派生新类使用 不能创建抽象类的对象 抽象类的指针和引用 由抽象类派生出来的类的对象 A a; // 错, A 是抽象类, 不能创建对象 A * pa; // ok, 可以定义抽象类的指针和引用 pa = new A; // 错误, A 是抽象类, 不能创建对象 3

57 纯虚函数和抽象类 抽象类中, 在成员函数内可以调用纯虚函数 在构造函数 / 析构函数内部不能调用纯虚函数 如果一个类从抽象类派生而来 它实现了基类中的所有纯虚函数, 才能成为非抽象类 4

58 class A { public: virtual void f() = 0; // 纯虚函数 void g( ) { this->f( ); } //ok A( ){ } //f( ); // 错误 class B : public A{ public: void f(){ cout<<"b: f()"<<endl; } int main(){ B b; b.g(); return 0; } 输出结果 : B: f() 5

Microsoft PowerPoint - 第07讲_多态1.ppt [兼容模式]

Microsoft PowerPoint - 第07讲_多态1.ppt [兼容模式] 程序设计实习 (I): C++ 程序设计 第七讲多态 上节内容回顾 基本概念 : 继承 基类 派生类 派生类的成员组成 可见性 派生类的构造 析构 派生类与基类的指针类型转换 2 回顾 : public 继承 class base { private: int m; public: int q; base(int ti=0):m(i){} }; class derived : public base

More information

幻灯片 1

幻灯片 1 信息科学技术学院 程序设计实习 郭炜微博 http://weibo.com/guoweiofpku http://blog.sina.com.cn/u/3266490431 刘家瑛微博 http://weibo.com/pkuliujiaying 1 信息科学技术学院 程序设计实习 郭炜刘家瑛 继承和派生 ( 教材 P215) 2 继承和派生的概念 继承 : 在定义一个新的类 B 时, 如果该类与某个已有的类

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

提纲 1 联编与多态性 2 用虚函数实现多态 3 虚函数的工作原理 4 纯虚函数与抽象类 5 总结与思考 Dongke Sun (Southeast University) C++ Programming and Algorithms April 12, / 36

提纲 1 联编与多态性 2 用虚函数实现多态 3 虚函数的工作原理 4 纯虚函数与抽象类 5 总结与思考 Dongke Sun (Southeast University) C++ Programming and Algorithms April 12, / 36 程序设计与算法语言 虚函数 C/C++ Programming and Algorithms Virtual Function Dongke Sun ( 孙东科 ) dksun@seu.edu.cn 东南大学机械工程学院 School of Mechanical Engineering Southeast University April 12, 2018 提纲 1 联编与多态性 2 用虚函数实现多态

More information

untitled

untitled (encapsulation) 例 類 說 類 料 來 料 information hiding 念 (inheritance) 來說 類 類 類 類 類 類 行 利 來 (polymorphism) 不 類 數 不 1 2 3 4 類 類 不 類 不 類 5 6 7 // virtual 不見了 #include #include using namespace

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

Microsoft PowerPoint - CPP-Ch Print.ppt [兼容模式]

Microsoft PowerPoint - CPP-Ch Print.ppt [兼容模式] Chapter 13 Object-Oriented Programming: Polymorphism http://jssec.seu.edu.cn 杨明 yangming2002@seu.edu.cn OBJECTIVES What polymorphism( 多态 ) is, how it makes programming more convenient, and how it makes

More information

Strings

Strings Polymorphism and Virtual Functions Cheng-Chin Chiang Virtual Function Basics 多 型 (Polymorphism) 賦 予 一 個 函 數 多 種 意 涵, 存 在 於 同 一 類 別 之 內 祖 先 類 別 與 後 代 類 別 間 物 件 導 向 程 式 設 計 基 本 原 理 虛 擬 函 數 (Virtual Function)

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Microsoft PowerPoint - 第06讲_继承.ppt [兼容模式]

Microsoft PowerPoint - 第06讲_继承.ppt [兼容模式] 程序设计实习 (I): C++ 程序设计 第六讲继承 上节内容回顾 三种运算符重载的实现方式 重载为普通函数 重载为成员函数 重载为友元 常见的运算符重载 流运算符 (>>

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

第七讲 继承与多态

第七讲  继承与多态 第 七 章 继 承 与 派 生 1 本 章 主 要 内 容 的 继 承 成 员 的 访 问 控 制 单 继 承 与 多 继 承 派 生 的 构 造 析 构 函 数 成 员 的 标 识 与 访 问 深 度 探 索 2 的 继 承 与 派 生 的 继 承 与 派 生 保 持 已 有 的 特 性 而 构 造 新 的 过 程 称 为 继 承 在 已 有 的 基 础 上 新 增 自 己 的 特 性 而 产 生

More information

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 PERSON 1 Person 题目描述 编写程序, 定义一个基类 Person, 包含 name 和 age 两个数据成员 ; 再由它派生出学生类 Student 和教师类 Teacher, 其中学生类添加学号 no 数据, 教师类添加职称 title 数据 ; 要求每个类均有构造函数 析构函数和显示数据的函数

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public

More information

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 CIRCLE 1 Circle 描述 编写一个圆类 Circle, 实现半径的输入 面积的计算和输出 输入 圆的半径 (double 类型 ) 输出 圆的面积 ( 保留小数点后两位 ) 样例输入 3 样例输出 28.27 提示 圆周率的取值需要比较精确, 以保证计算结果的精度 #include

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public char

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public char

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

Microsoft PowerPoint - 04-Inheritance.ppt

Microsoft PowerPoint - 04-Inheritance.ppt 继承 派生与多态性 1 本章主要内容 类的继承与派生 类成员的访问控制 简单继承与多重继承 派生类的构造 析构函数 多态性 2 1 类的继承与派生 保持已有类的特性, 并在其基础上产生新的类, 称新类继承了已有类的特征, 或称已有类派生出新类 被继承的已有类称为基类 ( 或父类 ) 派生出的新类称为派生类 派生类将自动继承基类的所有特性 ( 属性和方法 ) 派生类可以定义新的特性 ( 属性和方法 )

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

슬라이드 1

슬라이드 1 2018-2019 年度第二学期 00106501 计算机图形学 童伟华管理科研楼 1205 室 E-mail: tongwh@ustc.edu.cn 中国科学技术大学数学科学学院 http://math.ustc.edu.cn/ 附讲三 C/C++ 编程 ( 二 ) 2 C++ 特点 C++ 是面对对象 (object oriented) 编程语言 纯面向对象语言 : 指不管什么东西, 都应该存在于对象之中,

More information

Chapter12 Derived Classes

Chapter12   Derived Classes 继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数

More information

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 1 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 简单图形 1 简单图形 输入图形的行数 ( 如下图 7 行 ), 输出如下图所示图形 * *** ***** ******* ***** *** * 2 1 简单图形 1 #inc lude 2 using namespace std ; 3 4 // 注意变量命名的方式 5 //

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

Microsoft Word - 970617cppFinalSolution.doc

Microsoft Word - 970617cppFinalSolution.doc 國 立 台 灣 海 洋 大 學 資 訊 工 程 系 C++ 程 式 設 計 期 末 考 參 考 答 案 姓 名 : 系 級 : 學 號 : 97/06/17 考 試 時 間 :10:00 12:10 試 題 敘 述 蠻 多 的, 看 清 楚 題 目 問 什 麼, 針 對 重 點 回 答 是 很 重 要 的 ; 不 確 定 的 請 一 定 要 當 場 提 出 來, 不 要 白 花 力 氣 在 誤 會

More information

Strings

Strings Inheritance Cheng-Chin Chiang Relationships among Classes A 類 別 使 用 B 類 別 學 生 使 用 手 機 傳 遞 訊 息 公 司 使 用 金 庫 儲 存 重 要 文 件 人 類 使 用 交 通 工 具 旅 行 A 類 別 中 有 B 類 別 汽 車 有 輪 子 三 角 形 有 三 個 頂 點 電 腦 內 有 中 央 處 理 單 元 A

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

绘制OpenCascade中的曲线

绘制OpenCascade中的曲线 在 OpenSceneGraph 中绘制 OpenCascade 的曲线 Draw OpenCascade Geometry Curves in OpenSceneGraph eryar@163.com 摘要 Abstract: 本文简要说明 OpenCascade 中几何曲线的数据, 并将这些几何曲线在 OpenSceneGraph 中绘制出来 关键字 KeyWords:OpenCascade Geometry

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式]

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式] 用户定义类型 User-defined Datatypes classes and structs 几何向量 (Geometry Vector) 二维平面上的向量由起点和终点构成 每个点包含两个坐标 (x, y), 因此一个向量需要四个实数表示 Start= (0.9,1.5) Start= (0.4,0.8) int main() { double xstart = 0.4; double xend

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

Microsoft PowerPoint - 10 模板 Template.pptx

Microsoft PowerPoint - 10 模板 Template.pptx 模板 Tempalte 泛型编程的需要 Why Templates? 设想你对整数类型实现了一个排序算法 : void sort(int *is,int n); 用该函数可以对实 复数或工资单排序吗? 模板可以复用源代码 - 泛型编程. inline void Swap( int &x, int &y){ int t = x; x = y; y =t; inline void Swap(double

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

Microsoft Word - chap10.doc

Microsoft Word - chap10.doc 78 10. Inheritance in C++ 我 們 已 介 紹 了 物 件 導 向 程 式 的 第 一 個 主 要 特 性, 即 程 式 可 模 組 化 成 為 類 別 ( 物 件 ), 類 別 具 有 資 料 封 裝 的 特 性 接 下 來 我 們 要 介 紹 物 件 導 向 程 式 的 另 一 個 主 要 特 性, 那 就 是 類 別 具 有 繼 承 的 功 能 繼 承 就 是 重 複

More information

C++_Lecture

C++_Lecture C++ 程序设计 张岳新编著 苏州大学出版社 1 第十一章 继承和派生类 2 继承性是面向对象程序设计中最重要的机制 这种机制提供了无限重复利用程序资源的一种途径 通过 C++ 语言中的继承机制, 可以扩充和完善旧的程序设计以适应新的需求 这样不仅可以节省程序开发的时间和资源, 并且为未来程序增添了新的资源 3 class Student { int num; char name[30]; char

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 第 六 讲 指 针 与 字 符 串 1 内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 指 针 什 么 是 指 针 指 针 的 定 义 与 运 算 指 针 与 一 维 数 组 指 针 数 组 行 指 针 与 二 维 数 组 指 针 与 引 用 指 针 与 函 数 3 指 针 定 义 什 么 是 指 针 指 针 变 量, 简 称 指 针, 用 来 存 放

More information

Microsoft PowerPoint - L17_Inheritance_v4.pptx

Microsoft PowerPoint - L17_Inheritance_v4.pptx C++ Programming Lecture 17 Wei Liu ( 刘 威 ) Dept. of Electronics and Information Eng. Huazhong University of Science and Technology May. 2015 Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance

More information

ebook39-5

ebook39-5 5 3 last-in-first-out, LIFO 3-1 L i n e a r L i s t 3-8 C h a i n 3 3. 8. 3 C + + 5.1 [ ] s t a c k t o p b o t t o m 5-1a 5-1a E D 5-1b 5-1b E E 5-1a 5-1b 5-1c E t o p D t o p D C C B B B t o p A b o

More information

北京大学

北京大学 1 运算符重载 基本概念 郭炜刘家瑛 北京大学程序设计实习 运算符 C++ 预定义表示对数据的运算 +, -, *, /, %, ^, &, ~,!,, =, ,!= 只能用于基本的数据类型 整型, 实型, 字符型, 逻辑型 2 自定义数据类型与运算符重载 C++ 提供了数据抽象的手段 : 用户自己定义数据类型 -- 类 调用类的成员函数 操作它的对象 类的成员函数 操作对象时, 很不方便

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

C++ 程序设计 实验 2 - 参考答案 MASTER 2017 年 5 月 21 日 1

C++ 程序设计 实验 2 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 2 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 CRECT 类 1 CRect 类 设计矩形类, 包含 长度和宽度信息 基本构造函数 基础属性的访问接口 ( 读 / 写, Read/Write, Get/Set) 计算周长和面积 ( 注 : 基本构造函数, 一个无参数的默认构造函数, 以及一个初始化数据成员的构造函数如果数据成员的初始化有多种形式, 就提供多个构造函数

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

untitled

untitled 1 1.1 1.2 1.3 1.4 1.5 ++ 1.6 ++ 2 BNF 3 4 5 6 7 8 1.2 9 1.2 IF ELSE 10 1.2 11 1.2 12 1.3 Ada, Modula-2 Simula Smalltalk-80 C++, Objected Pascal(Delphi), Java, C#, VB.NET C++: C OOPL Java: C++ OOPL C# C++

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温 爱 情 飞 过 苍 凉 / 作 者 :18758265241 1 红 色 格 子 的 旅 行 箱, 在 湿 漉 漉 地 上 发 出 刺 啦 刺 啦 的 声 音, 那 么 刺 耳, 就 像 是 此 刻 杜 晗 的 里 一 样, 烦 躁 而 不 安 就 这 样 走 出 来 了,18 年 禁 锢 自 己 的 地 方 就 在 身 后, 杜 晗 手 指 关 节 泛 白, 紧 紧 地 拉 着 旅 行 箱, 走

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

<4D F736F F F696E74202D20B5DA3032BDB25FC0E0BACDB6D4CFF3312E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D20B5DA3032BDB25FC0E0BACDB6D4CFF3312E BBCE6C8DDC4A3CABD5D> 程序设计实习 (I): C++ 程序设计 第二讲类和对象 (1) 面向对象的程序设计 面向对象的程序设计方法, 能够较好解决结构化程序设计中出现的问题 面向对象的程序 = 类 + 类 + + 类 设计程序的过程, 就是设计类的过程 2 面向对象的程序设计 面向对象的程序设计方法 : 将某类客观事物共同特点 ( 属性 ) 归纳出来, 形成一个数据结 构 ( 可以用多个变量描述事物的属性 ); 将这类事物所能进行的行为也归纳出来,

More information

程序设计语言及基础

程序设计语言及基础 Chapter 10 Classes: A Deeper Look, Part 2 http://jssec.seu.edu.cn 杨明 yangming2002@seu.edu.cn OBJECTIVES To specify const (constant) objects and const member functions. To create objects composed of other

More information

C/C++ - 数组与指针

C/C++ - 数组与指针 C/C++ Table of contents 1. 2. 3. 4. 5. 6. 7. 8. 1 float candy [ 365]; char code [12]; int states [50]; 2 int array [6] = {1, 2, 4, 6, 8, 10}; 3 // day_mon1.c: # include # define MONTHS 12 int

More information

Microsoft Word - 課程發展委員會(選版本).doc

Microsoft Word - 課程發展委員會(選版本).doc 104 1 花 蓮 縣 富 里 鄉 富 里 國 民 小 學 103 度 第 二 學 期 程 發 展 委 員 會 會 議 紀 錄 會 議 時 間 :104 年 5 月 21 日 ( 三 ) 下 午 1:30 會 議 地 點 : 校 會 議 室 討 論 事 項 : 案 由 : 討 論 104 度 審 定 教 科 書 選 用 ( ) 實 施 年 級 之 領 域 教 科 書 選 用 覽 表 紅 色 字 體

More information

月光迴旋曲

月光迴旋曲 臺 北 人, 淡 江 大 學 中 文 所 畢 曾 任 電 腦 雜 誌 採 編 電 視 臺 執 行 製 作 高 職 專 任 導 師, 曾 獲 耕 莘 四 十 週 年 臺 灣 之 顏 文 學 獎 2007 全 國 臺 灣 文 學 營 創 作 獎 第 二 十 四 屆 聯 合 文 學 小 說 新 人 獎 第 九 屆 暨 第 十 二 屆 臺 北 文 學 獎 九 十 九 年 教 育 部 文 藝 創 作 獎 第

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

Microsoft PowerPoint - 7. 面向对象程序设计-Object-Oriented Programming.ppt [兼容模式]

Microsoft PowerPoint - 7. 面向对象程序设计-Object-Oriented Programming.ppt [兼容模式] 面向对象程序设计 Object-Oriented Programming(OOP) Classes,Inheritance, Polymorphism A Survey of Programming Techniques Unstructured programming, procedural programming, modular programming and object-oriented

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

公開徵求廠商提供「採購專業人員訓練計畫企劃書」公告

公開徵求廠商提供「採購專業人員訓練計畫企劃書」公告 1 2 95 4 13 09500131390 96 4 11 09600141370 ( )92 1 29 09200043870 93 11 17 09300431800 11 3 ( ) ( ) ( ) ( 1 ) 2 ( ) ( ) ( 1 ) ( ) 15 15 16 ( ) ( ) ( ) ( ) 80 50 ( ) ( ) ( ) ( ) ( ) 1 [ ] 1/10 ( ) ( )

More information

-------------------------------------------------------------------------------- 2000-12 -------------------------------------------------------------------------------- --------------------------------------------------------------------------------

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

<4D6963726F736F667420576F7264202D20B9FABACBB0B2B7A25B323031305D3238BAC5B8BDBCFEC8FD2E646F63>

<4D6963726F736F667420576F7264202D20B9FABACBB0B2B7A25B323031305D3238BAC5B8BDBCFEC8FD2E646F63> 附 件 三 : 焊 工 项 目 考 试 合 格 项 目 代 号 编 制 方 法 及 其 适 用 范 围 一 目 的 民 用 核 安 全 设 备 焊 工 焊 接 操 作 工 资 格 管 理 规 定 (HAF603) 的 附 件 1 附 件 2 和 附 件 3 确 定 了 针 对 特 定 的 核 安 全 设 备 焊 接 活 动 的 操 作 技 能 考 试 的 考 试 和 检 验 要 求 以 及 考 试

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

1 复 习 ( 时 间 5 分 钟 ): 提 问 复 习 C++ 语 言 中 类 的 概 念 与 使 用 等 提 问 复 习 C++ 语 言 如 何 定 义 类 提 问 复 习 C++ 语 言 和 面 向 对 象 编 程 的 相 关 概 念 教 学 安 排 与 设 计 教 学 反 馈 与 反 思 (

1 复 习 ( 时 间 5 分 钟 ): 提 问 复 习 C++ 语 言 中 类 的 概 念 与 使 用 等 提 问 复 习 C++ 语 言 如 何 定 义 类 提 问 复 习 C++ 语 言 和 面 向 对 象 编 程 的 相 关 概 念 教 学 安 排 与 设 计 教 学 反 馈 与 反 思 ( 课 程 名 称 C++ 程 序 设 计 授 课 班 级 教 师 姓 名 授 课 日 期 授 课 形 式 讲 授 ( ) 实 验 / 实 训 ( ) 习 题 ( ) 其 它 ( ) 授 课 章 节 或 项 目 名 称 ( 含 课 程 实 验 实 训 ) 基 类 与 派 生 类 任 务 目 标 合 理 地 使 用 封 装 掌 握 成 员 的 定 义 与 使 用 掌 握 成 员 权 限 的 使 用 教 学

More information

<4D F736F F D B0EAA5C1A470BEC7A4CEB0EAA5C1A4A4BEC7B8C9B1CFB1D0BEC7B9EAAC49A4E8AED7>

<4D F736F F D B0EAA5C1A470BEC7A4CEB0EAA5C1A4A4BEC7B8C9B1CFB1D0BEC7B9EAAC49A4E8AED7> 國 民 小 學 及 國 民 中 學 補 救 教 學 實 施 方 案 中 華 民 國 100 年 10 月 27 日 臺 國 ( 二 ) 字 第 1000193000 號 函 中 華 民 國 103 年 1 月 24 日 臺 教 國 署 國 字 第 1030004427 號 函 壹 方 案 緣 起 教 育 是 國 家 經 濟 社 會 發 展 的 重 要 投 資, 落 實 教 育 機 會 均 等 的 理

More information

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 第十一讲 运算符重载 与类型转换 运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2 为什么要运算符重载 预定义的运算符只针对基本数据类型, 若要对类的对象进行类似的运算, 需要重新定义运算符的功能 运算符重载实质就是函数重载 : 对已有的运算符赋予多重含义, 使得同一个运算符作用于不同类型的数据时导致不同的行为

More information

1 目 录 建 达 北 京 爱 丽 舍 花 园 地 产 基 金... 0 特 别 提 示... 2 第 一 章. 基 金 介 绍... 3 一 基 金 概 要... 3 二 产 品 优 势... 4 三 风 控 措 施... 6 四 交 易 结 构... 6 第 二 章. 投 资 项 目 介 绍..

1 目 录 建 达 北 京 爱 丽 舍 花 园 地 产 基 金... 0 特 别 提 示... 2 第 一 章. 基 金 介 绍... 3 一 基 金 概 要... 3 二 产 品 优 势... 4 三 风 控 措 施... 6 四 交 易 结 构... 6 第 二 章. 投 资 项 目 介 绍.. 建 达 北 京 爱 丽 舍 花 园 地 产 基 金 产 品 说 明 书 中 国 北 京 基 金 管 理 人 : 北 京 建 达 投 资 基 金 管 理 有 限 公 司 1 目 录 建 达 北 京 爱 丽 舍 花 园 地 产 基 金... 0 特 别 提 示... 2 第 一 章. 基 金 介 绍... 3 一 基 金 概 要... 3 二 产 品 优 势... 4 三 风 控 措 施... 6 四

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

More information

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 30 日 1

C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 5 月 30 日 1 C++ 程序设计 OJ4 - 参考答案 MASTER 2019 年 月 30 日 1 1 STRINGSORT 1 StringSort 题目描述 编写程序, 利用 string 类完成一个字符串中字符的排序 ( 降序 ) 并输出 输入描述 输入仅一行, 是一个仅由大小写字母和数字组成的字符串 输出描述 输出排序后的字符串 样例输入 abcde 样例输出 edcba 提示 使用 std::sort

More information