美文网首页
C++ 面试基础之二

C++ 面试基础之二

作者: Catcher07 | 来源:发表于2018-07-15 19:04 被阅读0次

一、强制类型转换运算符

static_cast

  • 任何具有明确定义的类型转换,只要不包含底层const,都可以用static_cast。
  • 用于非多态类型的转化。

dynamic_cast

  • 用于多态类型的转换
  • 执行运行时类型检查
  • 只适用于指针或引用
  • 对不明确的指针的转换将失败(返回 nullptr),但不引发异常
  • 可以在整个类层次结构中移动指针,包括向上转换、向下转换

const_cast

  • 用于删除const、volatile和__unaligned特性(如将const int类型转换为int 类型)

reinterpret_cast

  • 为运算对象的位模式提供较低层次上的重新的解释。
  • 允许将任何指针转换为任何其他指针类型
  • 也允许将任何整数类型转换为任何指针类型以及反向转换
  • reinterpret_cast 运算符不能丢掉 const、volatile 或 __unaligned 特性。

二、运行时类型识别

  • typeid运算符,用于表达式的类型
  • dynamic_cast运算符,用于将基类类型的指针或引用安全地转换成派生类的指针或引用。

type_id

  • type_id 运算符允许在运行时确定对象的类型
  • type_id 返回一个 type_info 对象的引用
  • 如果想通过基类的指针获得派生类的数据类型,基类必须带有虚函数
  • 只能获取对象的实际类型

type_info

  • type_info 类描述编译器在程序中生成的类型信息。此类的对象可以有效存储指向类型的名称的指针。type_info 类还可存储适合比较两个类型是否相等或比较其排列顺序的编码值。类型的编码规则和排列顺序是未指定的,并且可能因程序而异。
  • 头文件:typeinfo

三、拷贝构造函数

在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):

  1. 一个对象作为函数参数,以值传递的方式传入函数体;
  2. 一个对象作为函数返回值,以值传递的方式从函数返回;
  3. 一个对象用于给另外一个对象进行初始化(常称为复制初始化);
    通常的原则是:①对于凡是包含动态分配成员或包含指针成员的类都应该提供拷贝构造函数;②在提供拷贝构造函数的同时,还应该考虑重载"="赋值操作符号。
    https://blog.csdn.net/zhaohuaonline/article/details/19497129

C++成员初始化列表详解

  1. 从必要性:
    a. 成员是类或结构,且构造函数带参数:成员初始化时无法调用缺省(无参)构造函数
    b. 成员是常量或引用:成员无法赋值,只能被初始化
  2. 从效率上:
    如果在类构造函数里赋值:在成员初始化时会调用一次其默认的构造函数,在类构造函数里又会调用一次成员的构造函数再赋值。
    如果在类构造函数使用初始化列表:仅在初始化列表里调用一次成员的构造函数并赋值。
    https://blog.csdn.net/poundssss/article/details/49383603
    https://www.cnblogs.com/BlueTzar/articles/1223169.html
    https://blog.csdn.net/zizi7/article/details/52383015

相关文章

  • C++ 面试基础之二

    一、强制类型转换运算符 static_cast 任何具有明确定义的类型转换,只要不包含底层const,都可以用st...

  • 2019-03-19

    今天开始准备C++面试。0基础学习C++。一直更新到拿到C++的offer。

  • PHP面试准备

    Tech Interview Guide 技术面试必备基础知识、Leetcode、Java、C++、Python、...

  • 金九银十必备,全面总结 Kotlin 面试知识点

    前言 在 Android 面试中很重视基础知识的考察,其中语言基础主要包括 Java、Kotlin、C/C++ 三...

  • C++基础面试

    面试中的C++常见问题 1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”? 答:首...

  • c++面试

    一、 C/C++程序基础 面试例题1——分析代码写输出(一般赋值语句的概念和方法)。 面试例题2—...

  • Java基础知识与面试题整理

    # Java基础知识与面试题整理(一) @[toc] ---- ---- ## 垃圾回收机制 传统C/C++等编程...

  • 求职梳理

    笔试: 基础知识:乱七八糟 算法题:链表数组字符串树、栈、队列 面试: C++基础类继承多态C++11、STL、S...

  • 《大学专业生涯 计划书单》

    1、基础中的基础 →C++ 《C++Primer》 《EffectiveC++》 《Inside the C++ ...

  • C++基础

    c++面试题

网友评论

      本文标题:C++ 面试基础之二

      本文链接:https://www.haomeiwen.com/subject/vfzppftx.html