Chinaunix首页 | 论坛 | 博客
  • 博客访问: 588264
  • 博文数量: 213
  • 博客积分: 6789
  • 博客等级: 准将
  • 技术积分: 1947
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-01 17:11
文章分类

全部博文(213)

文章存档

2012年(9)

2011年(62)

2010年(99)

2009年(43)

分类: C/C++

2010-06-08 17:32:14

explicit:
explicit主要用于 "修饰 "构造函数. 
使得它不用于程序中需要通过此构造函数进行 "隐式 "转换的情况! 

指定此关键字,需要隐式转换方可进行的程序将会不能通过. 
而可通过强制转换使它没有用. 

static_cast:
支持子类指针到父类指针的转换,并根据实际情况调整指针的值,反过来也支持,但会给出编译警告,它作用最类似C风格的“强制转换”,一般来说可认为它是安全的;

dynamic_cast:
支持子类指针到父类指针的转换,并根据实际情况调整指针的值,和static_cast不同,反过来它就不支持了,会导致编译错误,这种转换是最安全的转换;

reinterpret_cast:
支持任何转换,但仅仅是如它的名字所描述的那样“重解释”而已,不会对指针的值进行任何调整,用它完全可以做到“指鹿为马”,但很明显,它是最不安全的转换,使用它的时候,你得头脑清醒,知道自己在干什么;

const_cast:这个转换能剥离一个对象的const属性,也就是说允许你对常量进行修改。(C++优化可能对常量修改无效)

mutable:
在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。

register:
用register声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器中;但对32位编译器不起作用,当global optimizations(全局优化)开的时候,它会做出选择是否放在自己的寄存器中;不过其它与register关键字有关的其它符号都对32位编译器有效。

template:
类模板

typename:
我认为typename的语义是: 通知编译器, 在typename后面被声明的东西是一个类型, 而不是别的
什么东西.

typeid:
关键字typeid(类型标识符):用来检测指针类型(返回type_info类对象的指针),格式为:typeid ( exdivssion ) 或 typeid ( type-id )其中,exdivssion为结果为对象的表达式,type-id为类名。

阅读(1534) | 评论(0) | 转发(0) |
0

上一篇:string

下一篇:use same name function

给主人留下些什么吧!~~