- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c静态类型转换
//该模块中的函数可能会被C程序调用,也可能被C++程序调用
#include iostream
#include a.h
using namespace std;
void show(void)
{
cout 无论是什么程序调用我都没有问题,这就叫做任性! endl;
}
a.h
#ifndef _A_H
#define _A_H
//该模块中的函数可能会被C程序调用,也可能被C++程序调用
#ifdef __cplusplus
extern C
{
#endif
void show(void);
#ifdef __cplusplus
}
#endif
#endif //_SHOW_H
main.cpp
//使用C++程序调用C++模块中的函数
#include a.h
int main(void)
{
show();
return 0;
}
main.c
//使用C程序调用C++模块中的函数
#include a.h
int main(void)
{
show();
return 0;
}
静态类型转换
目标类型 变量名=static_cast目标类型(源类型变量名)
功能:当目标类型和源类型之间只要有一个方向可以发生隐式类型转换,则在两个方向上都可以进行静态类型转换,
否则不能进行类型转换
常量类型转换
目标类型 变量名=const_cast目标类型(源类型变量名)
功能:主要用于去除指针/引用上面的常属性;
动态类型转换
目标类型 变量名=dynamic_cast目标类型(源类型变量名)
功能:主要用于具有多态特性的父子类之间的转换;
#includeiostream
using namespace std;
class A{
virtual void foo(void){}
};
class B:public A{};
class C:public B{};
class D{};
int main(void){
B b;
A* pa=b;//向上造型
coutpa=paendl;
B* pb=dynamic_castB*(pa);//安全
coutpb=pbendl;
C* pc=dynamic_castC*(pa);
coutpc=pcendl;
D* pd=dynamic_castD*(pa);
coutpd=pdendl;
try{
A ra=b;
C rc=dynamic_castC(ra);
}
catch(exception ex){
cout类型转换失败ex.what()endl;
}
cout----------------endl;
pb=static_castB*(pa);//一般安全
coutpb=pbendl;
pc=static_castC*(pa);
coutpc=pcendl;
cout--------------endl;
pb=reinterpret_castB*(pa);
/*最不安全目标类型 变量名=reinterpret_cast目标类型(源类型变量名)
功能:主要用于任意两个指针类型/指针和整型之间的转换*/
coutpb=pbendl;
pc=reinterpret_castC*(pa);
coutpc=pcendl;
pd=reinterpret_castD*(pa);
coutpd=pdendl;
return 0;
}
pa=0xbff2206c
pb=0xbff2206c
pc=0
pd=0
类型转换失败std::bad_cast
----------------
pb=0xbff2206c
pc=0xbff2206c
--------------
pb=0xbff2206c
pc=0xbff2206c
pd=0xbff2206c
c++社区对c程序员的建议
(1)尽量少使用宏,而代之以const和enum(枚举)以及inline(内联),template(模版)替代之;
(2)变量随时用随时申明;
(3)尽量少用malloc/free,多使用new/delete;
(4)避免使用void*,指针算术,联合以及强制类型转换;
(5)尽量少使用c风格的字符串,使用string类型
(6)理解面向对象的编程思想
成员变量的定义
类中的属性 叫做成员变量;
class 类名
{
数据类型 成员变量名
};
成员函数的定义
类中的行为 叫做成员函数
class 类名
{
返回值类型 函数名(形参列表)
{
函数体
}
}
c++中类和结构体的主要区别
a.关键字不同
b.类中的默认访控属性是私有的,结构体的默认访控属性是公有的
构造加初始化
您可能关注的文档
- B型利钠肽在心血管疾病中的应用进展.doc
- C10019企业并购会计处理实务86分.doc
- BIOS设置硬盘分区系统安装.doc
- C15片石砼路肩墙施工技术交底1.doc
- C16067-市场风险的分类-答案汇总100分.doc
- C16084债券信用风险计量答案.docx
- C16090-现场客户服务技巧-多套答案汇总100分.docx
- C30片石砼技术交底.docx
- C20盐城三模.doc
- C20混凝土挡土墙.doc
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
文档评论(0)