- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Void类型指针教程
Void 类型指针和强制类型转换;Void;void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。
;void的作用①对函数返回的限定。②对函数参数的限定。当函数不需要返回值时,必须使用void限定。例如: void func(int, int);当函数不允许接受参数时,必须使用void限定。例如: int func(void)。
由于void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值,因此还可以用void指针来作为函数形参,这样函数就可以接受任意数据类型的指针作为参数。例如:void * memcpy( void *dest, const void *src, size_t len );void * memset( void * buffer, int c, size_t num );
许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,下面详述void及void指针类型的使用方法与技巧。
;咳咳 下面是强制类型转换;C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。
1.const_cast,字面上理解就是去const属性。
2.static_cast,命名上理解是静态类型转换。如int转换成char。
3.dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。
4.reinterpreter_cast,仅仅重新解释类型,但没有进行二进制的转换。;const_cast
const_cast操作不能在不同的种类间转换。相反,它仅仅把一个它作用的表达式转换成常量。它可以使一个本来不是const类型的数据转换成const类型的,或者把const属性去掉。
struct SA {
int i;
};
const SA ra;
//ra.i = 10; //直接修改const类型,编译错误
SA rb = const_castSA(ra);
rb.i = 10;
;static_cast
可以实现C++中内置基本数据类型之间的相互转换。如果涉及到类的话,static_cast只能在有相互联系的类型中进行相互转换,不一定包含虚函数;dynamic_cast:
(1)其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。
(2)不能用于内置的基本数据类型的强制转换。
(3)dynamic_cast转换如果成功的话返回的是指向类的指针或引用,转换失败的话则会返回NULL。
(4)使用dynamic_cast进行转换的,基类中一定要有虚函数,否则编译不通过。 B中需要检测有虚函数的原因:类中存在虚函数,就说明它有想要让基类指针或引 用指向派生类对象的情况,此时转换才有意义。这是由于运行时类型检查需要运行时类型信息,而这个信息存储在类的虚函数表(关于虚函数表的概念,详细可见Inside c++ object model)中, 只有定义了虚函数的类才有虚函数表。
(5)在类的转换时,在类层次间进行上行转换时,dynamic_cast和static_cast的 效果是一样的。在进行下行转换时,dynamic_cast具有类型检查的功能,比 static_cast更安全。向上转换即为指向子类对象的向下转换,即将父类指针转化子类指针。向下转换的成功与否还与将要转换的类型有关,即要转换的 指针指向的对象的实际类型与转换以后的对象类型一定要相同,否则转换失败。;reinterpret_cast:
? 仅仅重新解释类型,但没有进行二进制的转换:
1. 转换的类型必须是一个指针、引用、算术类型、函数指针或者成员指针。
2. 在比特位级别上进行转换。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。但不能将非32bit的实例转成指针。
3. 最普通的用途就是在函数指针类型之间进行转换。
4. 很难保证移植性。;Oh~
yeah~
Over~
Thanks~
您可能关注的文档
- 六年级数学下册《成反比例的量》).ppt
- VHDL语言描述语句教程.ppt
- vim详解教程.ppt
- VICTOR6056C+说明书教程.doc
- vicky的PPT教程.ppt
- 公开课 第14课.ppt
- visio制作流程图教程.ppt
- VisualBasic第5章循环结构程序设计教程.ppt
- VisualC++上机步骤教程.ppt
- visualbasic程序设计(第二版)第三章课件教程.ppt
- 大题突破5⇒化学实验综合题 学案 2026届高中化学一轮复习.docx
- 1+x考证电子商务专业职业技能模拟练习题及答案.docx
- 【2025年】广东省阳江市辅警协警笔试笔试模拟考试题(含答案).docx
- 【2025年】广东省中山市【辅警协警】笔试模拟考试题(含答案).docx
- 【2025年】广东省珠海市辅警协警笔试笔试预测试题(含答案).docx
- 【2025年】甘肃省白银市【辅警协警】笔试模拟考试题(含答案).docx
- 2025年中级银行从业资格之中级个人贷款练习题库及参考答案详解(基础题).docx
- 0-36个月婴幼儿语音发展阶段指南.docx
- 2025年中级银行从业资格之中级个人贷款练习题库及参考答案详解【考试直接用】.docx
- 【2025年】甘肃省金昌市【辅警协警】笔试模拟考试题(含答案).docx
文档评论(0)