1.C艹+语言的面向对象特征 2.其他问题 (4)是否依赖自动废料收集(GC C++不依赖自动废料收集(GC); 大多数OO语言都依赖于自动存储回收系。 统 C++是例外,其设计目标之一是尽可能避 免对自动存储回收的依赖,以支持系统程 序设计,提高效率,减少运行时间上的不 确定性
1. C++语言的面向对象特征 2. 其他问题 – (4) 是否依赖自动废料收集(GC)? – C++ 不依赖自动废料收集(GC); – 大多数 OO 语言都依赖于自动存储回收系 统; – C++ 是例外,其设计目标之一是尽可能避 免对自动存储回收的依赖,以支持系统程 序设计,提高效率,减少运行时间上的不 确定性
1.C艹+语言的面向对象特征 2.其他问题 5)是否所有方法都采用动态约束? 面向对象语言里的方法调用通常采用“x.m(-)y3的形 式。其中,x是一个指向或者引用对象的变量,m是 x的定义类型的一个方法。 如果是根据变量x的类型静态确定,我们就称之为静 态约束; 如果是根据方法调用时被指向或引用的对象的类型 确定,我们就称之为动态约束。 C++提供静态约束(默认)和动态约束两种方式;
1. C++语言的面向对象特征 2. 其他问题 – (5) 是否所有方法都采用动态约束? – 面向对象语言里的方法调用通常采用“x. m(...)”的形 式。其中,x 是一个指向或者引用对象的变量,m是 x的定义类型的一个方法。 – 如果是根据变量x的类型静态确定,我们就称之为静 态约束; – 如果是根据方法调用时被指向或引用的对象的类型 确定,我们就称之为动态约束。 – C++ 提供静态约束(默认)和动态约束两种方式;
1.C艹+语言的面向对象特征 2.其他问题 5)是否所有方法都采用动态约束? C++提供静态约束(默认)和动态约束两种方式; 日 class B 白 class B{ public: publlc void runO const [cout<<"B"<<end1:] virtual void runo const icout<<B"<<end1:] 日 class A: public B Eclass A: public BC public: public void runO const cout<<"A"<<endl:] void runo const [cout<<"A"<endl; B int maino 白 int main() b f B *f=new B f. runo s runO B*p=&s: I return 0 静态约束 动态约束 return 0 C4. C Windows\system 32\cmd.exe 青按任意键继续. 按任意键继
1. C++语言的面向对象特征 2. 其他问题 – (5) 是否所有方法都采用动态约束? – C++ 提供静态约束(默认)和动态约束两种方式; 静态约束 动态约束
1.C艹+语言的面向对象特征 2.其他问题 (6)类类型对象的动态转换机制 C++提供的类类型对象的转换形式如下: dynamic cast<T>( expression): dynamic cast主要用来 执行“安全向下转型”( Safe downcasting),也就是 用来决定某对象是否归属继承体系中的某个类型 基本用法: 在使用时需要注意:被转换对象 dynamic cast可以获取目标对象的引用或obj的类型T1必须是多态类型, 指针: 即T1必须公有继承自其它类,或 Tl ob 者T1拥有虚函数(继承或自定义 T2*pOb= dynamic cast<T2*(&ob);)。若T1为非多态类型,使用 ∥转换为T2指针,失败返回NULL dynamic cast会报编译错误
1. C++语言的面向对象特征 2. 其他问题 – (6) 类类型对象的动态转换机制 – C++提供的类类型对象的转换形式如下: – dynamic_cast<T>(expression): dynamic_cast 主要用来 执行“安全向下转型”(Safe downcasting),也就是 用来决定某对象是否归属继承体系中的某个类型; 在使用时需要注意:被转换对象 obj的类型T1必须是多态类型, 即T1必须公有继承自其它类,或 者T1拥有虚函数(继承或自定义 )。若T1为非多态类型,使用 dynamic_cast会报编译错误。 基本用法: dynamic_cast可以获取目标对象的引用或 指针: T1 obj; T2* pObj = dynamic_cast<T2*>(&obj); //转换为T2指针,失败返回NULL;
1.C艹+语言的面向对象特征 2.其他问题 (6)类类型对象的动态转换机制 在多态类型间转换,分为3种类型: )子类向基类的向上转型 Up Cast) 2)基类向子类的向下转型( Down cast) 3)横向转型( Cross Cast
1. C++语言的面向对象特征 2. 其他问题 – (6) 类类型对象的动态转换机制 – 在多态类型间转换,分为3种类型: – 1) 子类向基类的向上转型(Up Cast) – 2) 基类向子类的向下转型(Down Cast) – 3) 横向转型(Cross Cast)