摘要:
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++ 阅读全文
摘要:
C++的四种类型转换之const_cast 前言 引用《Effective C++ 中文版第三版》中条款27 "尽量少做转型动作"中的一段话: C++规则的设计目标之一是,保证“类型错误”绝对不可能发生,理论上如果你的程序很“干净”的通过编译,就表示它并不企图在任何对象上执行任何不安全、无意义、愚蠢 阅读全文
摘要:
一. 函数描述:const_cast < type-id > ( expression )主要是用来去掉const属性,当然也可以加上const属性。主要是用前者,后者很少用。 去掉const属性:const_case<int*> (&num),常用,因为不能把一个const变量直接赋给一个非con 阅读全文
摘要:
const_cast转换运算符我们在RTTI和类型转换运算符中详细介绍过它的用法和使用场景,今天我们对其进一步了解一下。首先我们回忆一下它的作用和用法。 const_cast的基本使用const_cast运算符用于执行只有一种用途的类型转化,即改变const或volatile。 用法如下: cons 阅读全文
摘要:
顶层const&底层const: 普通变量没有底层顶层的区别; int const a == const int a 只有对应指针,引用才会有区别:指针常量->顶层const,指针本身不可被修改。 int * const b = &a,a既可以通过a = x来改变,也可以通过*b = x来改变,但不 阅读全文
摘要:
原文C++ const_cast用法 const_cast是一种C++运算符,主要是用来去除复合类型中const和volatile属性(没有真正去除)。 变量本身的const属性是不能去除的,要想修改变量的值,一般是去除指针(或引用)的const属性,再进行间接修改。 用法:const_cast<t 阅读全文
摘要:
在复习C++过程中,遇到了“常量折叠”,突然很是困惑,清楚地记得当时的理解就是:可折叠的常量和宏一样。其实在慢慢写学习中,就会知道这样的理解未免有些片面。现在才真正的觉得,每次看的时候都会有不同的感受,我想知识的魅力就在于此。 当时的理解就可以用下面的程序看看: #define PI 3.14 in 阅读全文
摘要:
一,前言 有关C++语言的const常量的考察点:肯定是const常量的内存不是分配在read-only的存储区的,const常量的内存分配区是很普通的栈或者全局区域。也就是说const常量只是编译器在编译的时候做检查,根本不存在什么read-only的区域。 所以说C++的const常量和常量字符 阅读全文
摘要:
关于C++中地址值打印出来为1的情况;以下是测试代码: #include <iostream>#include <iomanip> using namespace std; int main(){ const volatile int a = 10; cout << &a <<endl; int * 阅读全文