当前位置: 首页 > wzjs >正文

自己做的网站项目怎样卖推广注册app拿佣金平台

自己做的网站项目怎样卖,推广注册app拿佣金平台,广东企业移动网站建设哪家好,唐山做网站那家好文章目录 const_cast:去掉常量类型的类型转换static_cast:提供编译器认为安全的类型转换&#xff08;在编译阶段完成类型转换&#xff09;reinterpret:类似c风格的强制类型转化dynamic_cast:主要用在继承结构里&#xff0c;可以支持RTTI类型识别的上下转换dynamic_cast<>…

文章目录

  • const_cast:去掉常量类型的类型转换
  • static_cast:提供编译器认为安全的类型转换(在编译阶段完成类型转换)
  • reinterpret:类似c风格的强制类型转化
  • dynamic_cast:主要用在继承结构里,可以支持RTTI类型识别的上下转换
    • dynamic_cast<>仅对多态类型(含虚函数的类)有效
    • 多继承里的交叉转换

const_cast:去掉常量类型的类型转换

const_cast<>是语言级别上的检测,和C风格的强制转换在汇编代码上是一样的

//C
const int a1 = 10;
double* p1 = (double*)&a1;
//C++
int* p2 = const_cast<int*>(&a1);

const_cast只能用于去掉const属性,不弄用于类型转换
在这里插入图片描述
且const_cast<里面只能放指针和引用类型>
在这里插入图片描述

static_cast:提供编译器认为安全的类型转换(在编译阶段完成类型转换)

static_cast允许标准类型之间的相互转换和void*类型转换成其他指针类型

int a = 10;
char b = static_cast<char>(a);
long c = static_cast<long>(a);
int* p = nullptr;
short* b = static_cast<short*>(p);//错误void* p1 = nullptr;
short* p2 = static_cast<short*>(p1);

在这里插入图片描述

reinterpret:类似c风格的强制类型转化

int* k = nullptr;
//危险!容易照成未定义行为
short* b = reinterpret_cast<short*>(k);
double* j = reinterpret_cast<double*>(k);

原本指向四字节的int型k指针被强制转成八字节,多出那四字节可是未初始化的空间,当程序使用这块空间时会导致程序宕机

dynamic_cast:主要用在继承结构里,可以支持RTTI类型识别的上下转换

在程序运行时动态检查对象的实际类型。它会查询对象的RTTI信息(存储在虚函数表中)来判断转换是否合法

class A
{
public:virtual void func() = 0;
};class B : public A
{
public:void func() { std::cout << "call B::func" << std::endl; }
};class C : public A
{
public:void func() { std::cout << "call C::func" << std::endl; }void C_uinque_func() {std::cout << "C unique func" << std:: endl; }
};int main()
{B b1;C c1;show_func(&b1);show_func(&c1);return 0;
}

写一个show_func函数

void show_func(A* p)
{p->func();
}int main()
{B b1;C c1;show_func(&b1);show_func(&c1);return 0;
}

通过虚函数调用到两个派生类重写以后的函数的打印结果
在这里插入图片描述
当我们想实现传入子类C执行 C_uinque_func()函数
传入子类B执行func()函数时
可以把show_func()函数改成这样

void show_func(A* p)
{C* pd2 = dynamic_cast<C*>(p);//若转换非法(B无法转换成C,这两个之间无继承关系)对指针返回nullptrif(pd2 != nullptr){pd2->C_uinque_func();}else{p->func();}
}int main()
{B b1;C c1;show_func(&b1);show_func(&c1);return 0;
}

此时就可以动态调用到子类C的函数
在这里插入图片描述

dynamic_cast<>仅对多态类型(含虚函数的类)有效

如果我们把基类A里的虚函数改为普通函数,
dynamic无法正常使用
在这里插入图片描述

多继承里的交叉转换

dynamic_cast 可以用于跨越不同基类分支的转换,前提是目标类型与对象实际类型兼容

class Base1 
{
public:Base1(){std::cout << "this is Base1" << std::endl;}virtual ~Base1() {} 
};
class Base2 
{ 
public: Base2(){std::cout << "this is Base2" << std::endl;}virtual ~Base2() {} 
};
class Derived : public Base1, public Base2 
{};int main()
{Base1* b1 = new Derived;// 合法,因为对象实际是DerivedBase2* b2 = dynamic_cast<Base2*>(b1);return 0;
}
http://www.dtcms.com/wzjs/486874.html

相关文章:

  • 国内顶尖网站设计公司怎么让关键词快速排名首页
  • 中国十大猎头公司介绍优化清理大师
  • 安徽工程建设信息网站王开林百度搜索广告投放
  • 北京做网站多少钱合理找个免费网站这么难吗
  • 网站建设毕业实践设计报告重庆seo代理计费
  • 贵州讯玛网站建设如何做一个营销方案
  • 个人可以自己做网站吗郑州网络营销
  • 温州网站设计公司哪家好济南seo整站优化厂家
  • 上海网站开发企业二级域名网站查询入口
  • 荆门网络推广哈尔滨seo和网络推广
  • wordpress分类导航关键词优化排名软件哪家好
  • 网站建设报告 商业价值网上竞价平台
  • 电子政务门户网站建设项目招标采购快速优化官网
  • 做外贸网站有哪些成品网站源码在线看
  • 专门做塑胶原料副牌网站关键字排名优化公司
  • 金坛网站建设郑州最好的建站公司
  • 襄樊网站推广网络营销logo
  • 毕业设计做网站有哪些方面网站排名软件包年
  • 多样化的网站建设公司关键词指数
  • 凡网站建设国际新闻今天最新消息
  • 苏州企业网站建设怎么样建立自己的网站
  • 网站建设开发哪些开发语言在线培训网站
  • 沈阳网站优化怎么做长春seo结算
  • 网站制作公司前景最近三天的新闻大事
  • 吕梁营销型网站建设费用厦门seo报价
  • 北仑网站建设网站搜索引擎收录提交入口
  • 百度智能导航地图青岛百度整站优化服务
  • 个人可以做企业网站seo营销怎么做
  • 网站备案去哪里办理seo快速排名服务
  • 我回了橙子建站的验证码上海疫情最新情况