Microsoft PowerPoint - 04-Inheritance.ppt

Size: px
Start display at page:

Download "Microsoft PowerPoint - 04-Inheritance.ppt"

Transcription

1 继承 派生与多态性 1 本章主要内容 类的继承与派生 类成员的访问控制 简单继承与多重继承 派生类的构造 析构函数 多态性 2 1

2 类的继承与派生 保持已有类的特性, 并在其基础上产生新的类, 称新类继承了已有类的特征, 或称已有类派生出新类 被继承的已有类称为基类 ( 或父类 ) 派生出的新类称为派生类 派生类将自动继承基类的所有特性 ( 属性和方法 ) 派生类可以定义新的特性 ( 属性和方法 ) 派生类可以对继承的方法定义新实现 派生是一个从抽象到具体的过程 派生新类的过程一般包括 : 吸收已有类的成员 调整已有类的成员和添加新的成员三个步骤 3 现实世界对象的从属与继承关系 交通工具 汽车 Ð Æû³ µ ³ µ  ÃРг µ ¹ ¾ß³ µ ½Î³ µ Ãæ ü³ µ 4 2

3 继承与派生的目的 继承的目的 实现代码重用, 派生问题可以继承原有问题中具有普遍性的解决方法 最大程度利用原有的成果 派生的目的 当新的问题出现, 原有程序无法解决 ( 或不能完全解决 ) 时, 需要对原有程序进行改造, 具体解决新问题 继承和派生通过 C++ 的类来实现 5 派生类的声明 class 派生类名 : 继承方式基类名 派生类成员声明 ; 6 3

4 继承方式 不同继承方式的影响主要体现在 : 派生类成员对基类成员的访问权限 通过派生类对象对基类成员的访问权限 三种继承方式 公有继承 public 私有继承 private ( 缺省 ) 保护继承 protected 7 公有继承 (public) 基类的成员的访问属性 (public/protected/ private) 在派生类中访问属性保持不变 派生类中的成员函数可以直接访问基类中的 public 和 protected 成员, 但不能访问基类的 private 成员 对外部来说, 通过派生类的对象只能访问基类的 public 成员 8 4

5 class CBase // 基类 int x; protected: int y; private: int z; 例 : 公有继承 void CDerived::f(int i) x = i; // ok y = i; // ok z = i; // error int main() CDerived d; class CDerived: public CBase int a; void f(int i); d.x = 1; d.y = 2; d.z = 3; d.a = 4; d.f(5); // ok // error // error // ok // ok 9 私有继承 (private) 基类的 public/protected/private 成员在派生类中的访问属性都变成 private 派生类中的成员函数可以直接访问基类中的 public 和 protected 成员, 但不能直接访问基类的 private 成员 对外部来说, 通过派生类的对象不能直接访问基类中的任何成员 10 5

6 class CBase int x; protected: int y; private: int z; 例 : 私有继承 void CDerived::f(int i) x = i; // ok y = i; // ok z = i; // error int main() CDerived d; class CDerived: private CBase int a; void f(int i); d.x = 1; d.y = 2; d.z = 3; d.a = 4; d.f(5); // error // error // error // ok // ok 11 保护继承 (protected) 基类的 public/protected 成员在派生类中的访问属性都变成 protected 派生类中的成员函数可以直接访问基类中的 public 和 protected 成员, 但不能直接访问基类的 private 成员 对外部来说, 通过派生类的对象不能直接访问基类中的任何成员 12 6

7 类型兼容规则 从某个基类的派生 public 派生类的对象, 可以作为基类对象来使用 例如 : 人类派生学生类学生对象完全可以当作人类对象来使用 但是, 相反的方向则禁止 具体表现在 : 派生类的对象可以被赋值给基类对象 派生类的对象可以用来初始化基类的引用 指向基类的指针也可以用来指向派生类对象 注 : 通过基类对象名 指针只能访问基类的成员 13 单继承 单继承与多重继承 派生类只从一个基类派生 多重继承 派生类从多个基类派生 派生类继承多个基类的所有的属性和行为成员 14 7

8 多重继承 派生类从两个以上的父类继承 派生类将继承和拥有所有父类的属性和方法 Student Programer Student_Programer 15 多重继承时派生类的声明 class 派生类名 : 继承方式 1 基类名 1, 继承方式 2 基类名 2, 成员声明 ; class C : public A, private B 注意 : 每一个 继承方式, 只用于限制对紧随其后之基类的继承 16 8

9 派生类的构造函数 基类的构造函数不被直接继承成为派生类的构造函数, 派生类中需要声明自己的构造函数 在执行派生类构造函数时, 基类构造函数将被自动执行 派生类的构造函数 需要对本类中新增成员进行初始化 对继承的基类成员的初始化, 可以在自动调用基类构造函数的时候, 由基类构造函数完成 派生类构造函数也可以对继承的基类成员重新初始化 派生类的构造函数需要向基类构造函数传递参数 编写派生类的拷贝构造函数时, 也可能需要向基类拷贝构造函数传递参数 17 派生类的构造函数 派生类名 :: 派生类名 ( 参数表 ) : 基类名 1( 参数表 1), 基类名 2( 参数表 2), 成员 1( 参数表 ), 成员 2( 参数表 ), 成员的初始化 ; 18 9

10 例 : 派生类的构造函数 class A A() A(int x) ; class B B() B(int y) class C : public A, public B C(); C(int z); C(int x, int y, int z); private: int c; C::C() // 调用 A B 的默认构造函数 c = 0; C::C(int z):a(0),b(0) c = z; C::C(int z):a(0),b(0),c(z) C::C(int x, int y, int z): A(x),B(y),c(z) 19 构造函数的调用次序 1. 调用基类构造函数, 调用顺序按照它们被继承时声明的顺序 ( 从左向右 ) 2. 调用成员对象的构造函数, 调用顺序按照它们在类中声明的顺序 3. 执行派生类的构造函数体中的内容 20 10

11 派生类的析构函数 基类的析构函数也不被派生类继承, 派生类自行声明, 但派生类的析构函数会自动调用基类的析构函数 声明方法与一般类的析构函数相同 不需要显式地调用基类的析构函数, 系统会自动隐式调用 析构函数的调用次序与构造函数相反 成员对象 派生类 基类 21 同名隐藏规则 当派生类与基类中有相同成员时 : 若未加限定, 则通过派生类对象访问的是派生类中的同名成员 如要通过派生类对象访问基类中被覆盖的同名成员, 应使用基类名限定 22 11

12 例 : 同名隐藏 #include <iostream> using namecpace std; class B1 // 基类 B1 int nv; void func() class D1: public B1 // 派生类 void D1::func() B1::nV = 1; B1::func(); nv = 0; func(); int main() D1 d; int nv; void func(); // 同名数据成员 // 同名函数成员 d.nv = -1; d.func(); d.b1::nv = 1; d.b1::func(); 23 类继承对象的内存映像 派生类继承了父类的所有方法和属性 父类对象 父类的 private 属性父类的 protected 属性父类的 public 属性 父类的 private 方法父类的 protected 方法父类的 public 方法 父类的 private 属性父类的 protected 属性父类的 public 属性 父类的 private 方法父类的 protected 方法父类的 public 方法 派生类中包含父类的所有成员父类的内存映像 父类的成员成为了派生类的成员 在派生类中, 对父类成员的访问权限与其自身成员一样, 受到访问控制权限的限制 派生类的 private 属性派生类的 protected 属性派生类的 public 属性 派生类的 private 方法派生类的 protected 方法派生类的 public 方法 派生类对象 24 12

13 多重继承 派生类从两个以上的父类继承 派生类将继承和拥有所有父类的属性和方法 class Student protected: char * pname; student 的属性和方法 class Programer protected: char * pname; class Student_Programer : public Student, public Programer programer 的属性和方法 Student_Programer 自身的属性和方法 25 友元 友元是 C++ 提供的一种破坏数据封装和隐藏的机制 目的是为了方便编程 提高代码效率, 增加灵活性 使程序员可以在封装性和快速性方面做合理折衷 C++ 允许将一个类或函数声明为另一个类的友元, 这样在这个类或函数中就能够直接访问第二个类的隐藏信息 ( 即 private/protected 类型的成员变量和成员函数 ) 可以使用友元函数和友元类, 关键字 friend 友元关系是单向的, 友元关系是不能传递的 为了确保数据的完整性, 及数据封装与隐藏的原则, 建议尽量不使用或少使用友元 26 13

14 多态性 27 多态性的概念 多态性是面向对象程序设计的重要特征之一 多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为 多态的实现 : 函数重载 / 运算符重载 虚函数 28 14

15 联编 ( 绑定 ) 静态联编与动态联编 程序自身彼此关联的过程, 确定程序中的操作调用与执行该操作的代码间的关系 静态联编 联编工作出现在编译阶段, 用对象名或者类名来限定要调用的函数 动态联编 联编工作在程序运行时执行, 在程序运行时才确定将要调用的函数 29 C++ 类的多态性 类的多态性是面向对象程序设计的重要支柱 多态性体现在, 当向某种类型的对象发送相同消息时 ( 即调用对象的方法 ), 允许不同对象进行不同的操作 支持动态联编 在程序运行的过程中, 确定具体调用对象的哪一个方法 不提供多态性, 难以提高代码重用的效率 30 15

16 class complex 运算符重载 (overloading) // 复数类声明 complex(double r=0.0,double i=0.0) // 构造函数 real=r; imag=i; void display() cout << ( << real <<, << imag << ) ; // 显示复数的值 private: double real; double imag; 用 + - 能够实现复数的加减运算吗? 重载 + - 运算符 31 运算符重载的实质 运算符重载与函数重载本质相同 只不过重载的是 C++ 中保留的运算符 + - * / 运算符重载是对已有的运算符赋予多重含义 必要性 C++ 中预定义的运算符其运算对象只能是基本数据类型, 而不适用于用户自定义类型 ( 如类 ) 实现机制 将指定的运算表达式转化为对运算符函数的调用, 运算对象转化为运算符函数的输入参数 编译系统对重载运算符的选择, 遵循与函数重载选择相同的原则 32 16

17 规则和限制 可以重载 C++ 中除下列运算符外的所有运算符. ( 类属关系运算符 ) *( 指针运算符 ) ::( 作用域分辨苻 )?:( 三目运算符 ) sizeof 运算符 只能重载 C++ 语言中已有的运算符, 不可臆造新的 不改变原运算符的优先级和结合性 不能改变操作数的个数 经重载的运算符, 其操作数中至少应该有一个是自定义类型,class 或 struct 33 运算符重载的两种形式 重载为类成员函数 运算符函数是类成员函数 重载为友元函数 运算符函数是类的友元函数 若运算符函数只访问类中的 public 成员, 则无须是友元 34 17

18 运算符重载函数 声明形式函数类型 operator 运算符 ( 形参 ) 重载为类成员函数时 参数个数 = 原操作数个数 -1( 后置 除外 ) 若某对象使用了重载的成员函数, 该对象自身的数据可以直接访问, 不需要通过形参表传递 实际上, 减少了的操作数就是该对象本身 重载为友元函数时 参数个数 = 原操作数个数, 且至少应该有一个是自定义类型的形参 35 18

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

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

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

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

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

幻灯片 1

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

More information

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

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

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

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

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

C++_Lecture

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

More information

幻灯片 1

幻灯片 1 第三课类和对象 ( 封装 ) 互联网新技术在线教育领航者 1 内容概述 1. 封装的概念 2. 访问控制 3. 栈类的封装 4. 构造与析构 5.myString 构造函数 6. 构造与析构的次序 7. 类文件写法 8. 对象的内存 9.this 指针初探 10. 构造函数初始值列表 11. 拷贝构造和赋值运算符重载 12. 浅拷贝 13. 深拷贝 14. 成员函数内联 15. 友元 16.const

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

Modeling & Simulation 数学原理 物理规律和程序设计的综合 Magic Fluids Heart Simulator Dongke Sun (Southeast University) C++ Programming and Algorithms April 23,

Modeling & Simulation 数学原理 物理规律和程序设计的综合 Magic Fluids Heart Simulator Dongke Sun (Southeast University) C++ Programming and Algorithms April 23, 程序设计与算法语言 继承与派生 C/C++ Programming and Algorithms Inheritance and Derivation Dongke Sun ( 孙东科 ) dksun@seu.edu.cn 东南大学机械工程学院 School of Mechanical Engineering Southeast University April 23, 2018 Modeling

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

面向对象的程序设计 : 抽象 继承和多态 Dongke Sun (Southeast University) C++ Programming and Algorithms April 12, / 38

面向对象的程序设计 : 抽象 继承和多态 Dongke Sun (Southeast University) C++ Programming and Algorithms April 12, / 38 程序设计与算法语言 继承与派生 C/C++ Programming and Algorithms Inheritance and Derivation Dongke Sun ( 孙东科 ) dksun@seu.edu.cn 东南大学机械工程学院 School of Mechanical Engineering Southeast University April 12, 2018 面向对象的程序设计

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

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

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B,

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B, 1 下列类头定义中, 正确的是 A class x B public x extends y C public class x extends y. D class x extends y implements y1 2 现有两个类 A B, 以下描述中表示 B 继承自 A 的是 (D ) A) class A extends B B) class B implements A C) class A

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

Microsoft PowerPoint - 07 派生数据类型

Microsoft PowerPoint - 07 派生数据类型 能源与动力工程学院 目录 派生类型 陈 斌 固有数据类型 数值型 (numerical) 整型 INTEGER 实型 REAL 复数型 COMPLEX 非数值型 字符型 CHARACTER 逻辑型 ( 布尔型 )LOGICAL 自定义数据类型 ( 派生类型, derived type) 派生类型是指用户利用 Fortran 系统内部类型, 如整型 实型 复数型 逻辑型 字符型等的组合自行创建出一个新的数据类型,

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

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

ó ú ú ì á ò à á ì ù í ü à ò á ò á à á

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

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

提纲 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

Microsoft PowerPoint - 08_OO_CJC.ppt

Microsoft PowerPoint - 08_OO_CJC.ppt C++ 中的 Hello World! C 程序设计语言 第 8 章 OO 与 C++ Java C# 孙志岗 sun@hit.edu.cn http://sunner.cn 兼容 C 语言的 : #include int main() printf("hello,, world!\n"); return 0; 更具 C++ 味道的 : #include int

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

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

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/C++ Programming and Algorithms Static, Friend and Const Dongke Sun ( 孙东科 ) 东南大学机械工程学院 School of Mechanical Engineer

程序设计与算法语言 静态与友元 C/C++ Programming and Algorithms Static, Friend and Const Dongke Sun ( 孙东科 ) 东南大学机械工程学院 School of Mechanical Engineer 程序设计与算法语言 静态与友元 C/C++ Programming and Algorithms Static, Friend and Const Dongke Sun ( 孙东科 ) dksun@seu.edu.cn 东南大学机械工程学院 School of Mechanical Engineering Southeast University Spring semester, 2019 牢记 80/20

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

國立中山大學學位論文典藏.pdf

國立中山大學學位論文典藏.pdf ------------------------------------------------ 10 -------------------------------- 12 --------------------------------------------------------- 12 ----------------------------- 13 --------------------------------

More information

é ú í í à á í à ù à é ó à è á ù á à à ì á á à é í á ò è ì í ì ù à é ì ì à à è ù é à ù à é ú ì ú ù 1 1 3 4

More information

ò à í é ì è ì é á à è à è è ì á á à à à

More information

ò ú ó ó ú ó ú ó ú ú ó G L E = G W à è í ü í ü ü á á á á á á á á

More information

030 í á ì ú è ì à é ù ò í í ú ù ù á í í ì ù ó ù ì è à é é ú í ì ù ì è ò á à ì ì ì ì ì á ú ì é í í é ò í ì é è ú ú í é ú è à è è à è ó à ò ù à à ù ó ì ì ì à à ù à á ú á ì á ù ù è

More information

á á á ú é ó é é á í í á ú á é á á í í é

More information

ó ú à ù á í í ì ì ù á ù í í ò ó ú ù à ì ì è á í í ì è á ù è ì à ú ì ù ì í à ì ì ó ì ì è ì è á ó à ó ò é ú? à á á ú á í é ì é ì á à á ù á à ò á ò é ù? ì

More information

è

è è à à à í á à à ì ú ú á ú ú ì ì í ù í à ú è ò ò ì ù ì à ì à í ì ì è è è é à ì é é á è í í à ì è ì ú í ù ì ò è à í ì à á è ì ó ú è é é ì é ì ì ì ú ó ì à ú á

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

í í à ù à à í è è ú ì á á í à ú á è á ú à é à ù ú ì ì ì ò í è ì ì í ì ì ì è ì ì à é ó ò ó ú é ì ù ì í ó è ì à è á à ì à à à í í é á à ù ì ò ì é ú í í à à à à

More information

1989 67 1993 125 305 1989 251 1964 8 1990 231 1983 608 1987 207 1990 6 ú é ì à í à ó 1990 51 é í í ù è ì ò ú à ù ó ú è í à ì è è è í á ó ì á á ò ì á ò

More information

ttian

ttian í á é ì ì ì ó á ú è ù ó è á á é ì ú á á ò á è è ó é è ì á à á

More information

ò ó ì á è ó

ò ó ì á è ó ò ó ì á è ó à à è ì è á ó ì à ì à à à á ì ó à ì ì è ó à ú ì í í á ù ò ò í ì ó à ò ú ó ì à à à à à à í á ì ù ù è ù è ò è ù é à

More information

ì

ì ì ó à á à í é é è ú à ú ù è í ù è á ú é ù í é à ú á à í ó ò è ì ì é à à á ò à ú è ó á à í ù ú ì ì í ì á è ù ù ò ó á ì ì à è á á ì à ó è ì á ì ì à é ì ó é à ú í ì í á à á

More information

ú á à à á á è ù? ì í ì á ì ò é? é à ì? à ó é à ì à à ì é í ì è? à ì á ú ó á á ì ù ì è ù

More information

ú ì à ì ù ù é à à à í ú ì ì à í à é ì ó à è à ù ì é á ù ú ò ù ù ò

More information

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

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1 C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1 1 圆 1 圆 设计圆类 包含 包含基本属性和基本属性访问接口 计算面积和周长接口 2 1 圆 1 #include 2 using namespace std ; 3 c l a s s CCircle 4 { 5 p r i v a t e : 6 double r ; 7 const

More information

FY.DOC

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

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

模板

模板 制作人 : 张刚 目录 类和对象 面向对象程序设计基本特征 类的声明 构造方法 成员变量和方法 封装 继承 多态 包 访问控制 final static 抽象类和接口 内部类 沈阳工业大学软件学院 Java 课程教研组 Page 2 核心知识点 类 对象 三个基本特征 类的基本结构 成员变量 构造方法 成员方法 类实例 对象创建和操作 沈阳工业大学软件学院 Java 课程教研组 Page 3 1.

More information

ò í ú ó ì à ò è 5500 500 2 5500 x 23 50 2 5 2 5 9 5 10 9 5 9 9 4 4 10 64 9 9 74 10 1 5 2 1 9 5 5 4 9 7 1 5 1 3 2 1 3 1 5 1 3 1 5 1 1 5 1 3 1 1 1 4 1 4 2 40 40 1

More information

<4D F736F F F696E74202D20B5DA39D5C220C3E6CFF2B6D4CFF3D3EFD1D4B5C4B1E0D2EB2E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D20B5DA39D5C220C3E6CFF2B6D4CFF3D3EFD1D4B5C4B1E0D2EB2E BBCE6C8DDC4A3CABD5D> 第 9 章 面向对象语言的编译 本章内容 概述面向对象语言的重要概念和实现技术 以 C++ 语言为例, 介绍如何将 C++ 程序翻译 成 C 程序 实际的编译器大都把 C++ 程序直接翻译成低 级语言程序 91 9.1 面向对象语言的概念 9.1.1 对象和对象类 对象 由一组属性和操作于这组属性的过程组成 属性到值的映射称为对象的状态, 过程称为方法 对象类 一类对象的总称, 规范了该类中对象的属性和方法,

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

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++ 基本的程序设计... 1 C++ 对 C 的扩充... 3 类和对象... 5 继承和派生... 9 多态性 函数模板和类模板 输入输出流

目录 C++ 基本的程序设计... 1 C++ 对 C 的扩充... 3 类和对象... 5 继承和派生... 9 多态性 函数模板和类模板 输入输出流 面向对象程序设计 上机实验指导书 临沂大学汽车学院 编写 : 韩晓翠 2015 年 8 月修订 1 目录 C++ 基本的程序设计... 1 C++ 对 C 的扩充... 3 类和对象... 5 继承和派生... 9 多态性... 11 函数模板和类模板... 13 输入输出流... 14 2 C++ 基本的程序设计 一 目的 : 1 熟悉 VC++ 环境的基本命令和功能键 ; 2 掌握 C++ 程序的三大基本结构的输入

More information

Microsoft Word - 新正文.doc

Microsoft Word - 新正文.doc 第 6 章运算符重载 运算符重载是面向对象程序设计的重要特性 运算符重载是对已有的运算符赋予多重含义, 使同一个运算符作用于不同类型的数据时触发不同的响应 C++ 中经重载后的运算符能直接对用户自定义的数据进行操作运算, 这就是 C++ 语言中的运算符重载所提供的功能 通过本章的学习, 读者应该掌握以下内容 : 运算符重载函数的定义及规则 友元运算符重载函数的定义与使用 成员运算符重载函数的定义与使用

More information

ü Ä ä ä ï ï ü ä ä

ü Ä ä ä ï ï ü ä ä ü Ä ä ä ï ï ü ä ä ü ü ü ä 50000476_0047_2 2 3 316 ó é â á ó ü ü ü ü ü ü ü ü ü ü ü ü é é ô é ò è é ü ü ü ü ü

More information