casting

upcasting : Assigning a pointer of a derived class type to a pointer of its base class type (将派生类类型指针赋值给基类类型指针

downcasting : Assigning a pointer of a base class type to a pointer of its derived class type. (将基类类型指针赋值给派生类类型指针)

注意这里的upcasting/downcasting的探讨范围是指针的赋值:且所谓向上向下方向是从右向坐看方向。

上转可不适用dynamic_cast而隐式转换

eg:GeometricObject *g = new Circle(1);

Circle *c = new Circle(2);

g = c; //Correct

下转必须显式执行

c = dynamic_cast(g);//不可以直接赋值,进行隐式转换,只能dynamic_cast

注意:基类与派生类的赋值互操作(对象,指针,引用)都遵从一个原则:可以截断,不可无中生有。

时间: 2024-10-15 17:22:24

casting的相关文章

LA 4975(Casting Spells-manacher+暴力查找)

4975 - Casting Spells Time limit: 3.000 seconds Casting spells is the least understood technique of dealing with real life. Actually, people find it quite hard to distinguish between a real spells like ``abrahellehhelleh" (used in the battles and tau

casting in C++

这是2013年写的一篇旧文,放在gegahost.net上面 http://raison.gegahost.net/?p=39 February 20, 2013 casting in C++ Filed under: c++ — Tags: C++ internal, dynamic_cast, reinterpret_cast, static_cast — Raison @ 6:17 am (original work by Peixu Zhu) Unlike in C language,

十七、类型绑定 Type Casting

1. 概述 Type Casting 的作用: 1)检查某个实例的类型.使用 is 关键字. 2)将某个实例的类型绑定为其他类型来访问.使用 as 关键字. 3)检查某种类型是否实现了协议的方法. 2. 引例,定义三个类: class MediaItem { var name: String init(name: String) { self.name = name } } class Movie: MediaItem { var director: String init(name: Stri

【题解】Casting Spells LA 4975 UVa 1470 双倍回文 SDOI 2011 BZOJ 2342 Manacher

首先要吐槽LRJ,书上给的算法标签是"有难度,需要结合其他数据结构",学完Manacher才发现几乎一裸题 题目的意思是问原串中有多少个wwRwwR这样的子串,其中wR表示w的反串 比较容易看出来,wwRwwR本身是一个回文串,wwR也是一个回文串 最裸的暴力是,我们枚举每一个回文串,然后判断这个回文串的左半边是不是也是个回文串 然后我们考虑用Manacher 我们考虑Manacher的工作原理,是在充分利用原先的信息的前提下,不重复,不遗漏的枚举每个回文串 也就是说,在Manache

条款27:尽量少做转型动作(Minimize casting)

NOTE : 1.如果可以,尽量避免转型,特别是在注重效率的代码中避免dynamic_casts. 如果有个设计需要转型动作,试着发展无需转型的替代设计. 2.如果转型是必须要的,试着将它隐藏于某个函数背后.客户随后可以调用该函数,而不需要将转型放进他们自己的代码内. 3.宁可使用C++-style(新式)转型,不要使用旧式转型.前者很容易辨识出来,而且也比较有着分门别类的职撑.

体绘制(Volume Rendering)概述之4:光线投射算法(Ray Casting)实现流程和代码(基于CPU的实现)

转自:http://blog.csdn.net/liu_lin_xm/article/details/4850630 摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文 名“GPU编程与CG语言之阳春白雪下里巴人”     算法流程 图 47 展示了使用光线投射算法进行体绘制的实现流程. 首先要渲染出正向面深度图和背向面深度图,这是为了计算射线穿越的最大距离,做为循环采样控制的结束依据:然后在顶点着色程序中计算顶点位置和射线方向,射

体绘制(Volume Rendering)概述之3:光线投射算法(Ray Casting)原理和注意要点(强烈推荐呀,讲的很好)

转自:http://blog.csdn.net/liu_lin_xm/article/details/4850609 摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文 名“GPU编程与CG语言之阳春白雪下里巴人” 15.1 光线投射算法原理 光线投射方法是基于图像序列的直接体绘制算法.从图像的每一个像素,沿固定方向(通常是视线方向)发射一条光线,光线穿越整个图像序列,并在这个过程中,对图像序列进行采样获取颜色信息,同时依据光线吸收

[anyObject] 类型推断 Type Casting

在swift 中,如果遍历一个集合,可能就需要用到类型推断 方式一:先把一个确定的集合进行推断,之后在遍历,适合单一的元素类型. let constraints = self.constraints() as! [NSLayoutConstraint]; var item : NSLayoutConstraint? = nil; for constraint in constraints { if constraint.firstAttribute == attribute && cons

[Java in NetBeans] Lesson 03. More Variables / Type Casting

这个课程的参考视频在youtube. 主要学到的知识点有: It is different from python, that "1" only present string "1", and '1' only presents char '1'. (type) can chang the type , e.g. (int) (totalScore/4.5); will change the result of(totoalScore/4.5) which is a