首页 > 编程语言 >Effective C++ - 条款27 - 尽量少做转型动作

Effective C++ - 条款27 - 尽量少做转型动作

时间:2022-11-20 11:23:28浏览次数:34  
标签:27 Effective dynamic derived 转型 C++ cast base class

  1. 旧式C转型: T(expression)/(T)expression
  2. 新式C++转型:static_cast/dynamic_cast/const_cast/reinterpret_cast
  3. 只能通过const_cast去掉const
  4. dynamic_cast成本很高,很多编译器的实现都是用了字符串比较,所以尽量别用。可以通过虚函数来实现相同效果。dynamic_cast实现的是向下转型,比如将base class对象转为derived class对象。
  5. static_cast在使用时,如果是为了将derived class对象转型为base class,会有危险,因为转型后会得到derived class对象中base class部分的副本,而不是这个对象中base class部分本身,所以期望对这个base class部分本身做的修改不会生效。
  6. 将转型动作理解为告诉编译器把某种类型视为另一种类型是错误的。例如将int转为double时,这两种类型的底层表述有区别,所以不是简单的将int视为double。再如将derived对象转型为base,derived会包含多个地址,比如它的所有基类对应的地址。

标签:27,Effective,dynamic,derived,转型,C++,cast,base,class
From: https://www.cnblogs.com/ijpq/p/16908083.html

相关文章

  • c++报错:[Error] 'cout' was not declared in this scope
    一、报错代码#include<iostream>intmain(){intx=10;cout<<x<<"\n";return0;} 二、解决方法在代码中加入:usingnamespacestd;正确代......
  • C++实例会员管理程序
    设计快捷店会员的简单管理程序。基本要求如下:(1)定义人民币RMB类,实现人民币的基本运算和显示。(2)定义会员member类,表示会员的基本信息,包括:编号(按建立会员的顺序自动生成),姓名,密......
  • C++ 类的项目练习 定义一个类,来表示某模拟养成游戏中人物: 每个人物, 有昵称,年龄,性别,
    Hero.h:#pragmaonce#include<iostream>#include<string>#include<vector>#include<sstream>usingnamespacestd;typedefenumgender{Man,//男W......
  • C++机票购买系统
    C++机票购买系统机票购买系统该系统有两类用户,会员(多名)和管理员(1名)。其中,会员功能包括:1、首先注册并录入个人信息,包括:用户名,密码,生日,邮箱。注册后,自动设置会员编号。2......
  • 代码随想录刷题营day1|704.二分查找 34. 有序数组找首位末位 35.搜索插入的位置 27.移
    一、数组理论基础数组下标都是从0开始的数组内存空间的地址是连续的数组的元素是不能删的,只能覆盖二、刷题第一题704.二分查找题目链接:https://leetcode.com/prob......
  • [排序算法] 堆排序 (C++)
    堆排序解释什么是堆堆heap是一种近似完全二叉树的数据结构,其满足一下两个性质1.堆中某个结点的值总是不大于(或不小于)其父结点的值;2.堆总是一棵完全二叉树将根......
  • C++ STL简介
     vector,变长数组,倍增的思想size()返回元素个数empty()返回是否为空clear()清空front()/back()push_back()/pop_back()begin()/en......
  • AtCoder Beginner Contest 278
    A-Shift(abc278a)题目大意给定一个有\(n\)个整数的数组\(a\),要求进行以下\(k\)次操作,输出操作后的数组。操作为:将第一个数去掉,在队尾加上一个\(0\)。解题思路模......
  • AtCoder Beginner Contest 278
    咕咕咕。D-AllAssignPointAdd把数拆分成\(base+delta\)。\(base\)就是操作一设置的数,初始时认为\(base=0\);\(delta\)的维护可以有两种方法。一种是我比......
  • [排序算法] 树形选择排序 (C++)
    树形选择排序解释树形选择排序又称为锦标赛排序,其实理解起来很简单。......