c++一些很常用item.pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++基本语法(中) ZZZ_开心部落 百度空间 | 百度首页 | 登录 开心部落 主页博客相册 |个人档案 |好友 查看文章 C++基本语法(中) ZZZ 2009-04-07 20:38 0. 类型转换中的提示实际上就是内置数据类型的提升,如char转换为int,bool转换为int,float转 换为double等。 1. 类型转换中的标准转换有五种类型:(1)整值类型转换(不包括提升);(2)浮点转换;(3)浮点-整 值转换;(4)指针转换和(5)bool转换。前三种转换是有潜在危险的转换。所有的标准转换都是等价 的。一些注意点:0可以被转换为任何指针类型,这样创建的指针称为空指针值,同时0也可以是任 何整型常量表达式。常量表达式0L及0x00都属于整值类型因此能够被转换为int * 的空指针值。指针 转换允许任何指针类型的实参转换成void * ,但是函数指针不能用标准转换为void * 。 2. 对于引用参数来说,如果实参是该引用的有效初始值,则为精确匹配,否则为不匹配。 3. 模板非类型参数代表了一个常量表达式,由一个普通的参数声明构成,表示该参数名代表了模 板定义种的一个常量。在实例化时,该常量会被一个编译时已知的常量值代替。 4. 在模板中,为了支持类型表达式,必须使用typename ;如typename Param::name *p;定义了一 个指针p;如果不使用typename则该表达式为乘法。另外,模板函数也可以被声明为inline或 extern,必须把指示符放在参数模板后。如template typename T inline T fun1(){…} 5. 函数实参的推演中三种类型转换是允许的:(1)左值转换;(2)限定转换(const和volatile指示符); (3)到一个基类的转换:如果实参是一个类,它有一个从被指定为函数参数的类模板实例化而来的基 类;如下面的代码:template typename T class Array {}; template typename T T min (ArrayT array) {…}; 6. 可以使用显式指定模板参数,模板参数被显式指定在逗号分隔的列表中,紧跟在函数模板实例 的名字后面;如minunsigned int(a, b);代码强行指定模板参数以unsigned int转换。模板显式指定 参数类似于默认参数,只能省略后面的参数。 7. C++支持两种模板编译模式:包含模式和分离模式。包含模式下,在每个模板被实例化的文件 中包含函数模板的定义,并且往往把定义放在头文件中;分离模式下,函数模板的声明被放在头文 件中,它的定义放在另外一个实现文件中,函数模板在实现文件中的定义必须使用关键字export 。 8. C++支持模板的显式实例化,在显式实例化声明所在的文件中,函数模板的定义必须被给出。 如template typename T T f(T t); 显式实例化为int *类型,template int *f(int *); 9. C++支持模板的显式特化定义,如:template typename T T max(T t1, T t2){…}显式特化 file:///J|/c/c++一些很常用的item_0.html(第 1/4 页)2009-10-5 19:58:21 C++基本语法(中) ZZZ_开心部落 const char *类型的定义:template const char *maxconst char *(const char *c1, const char *c2);显式特化隐藏了通用模板对于该类型的实例。如果模板实参可以从函数参数中推演出来,则模 板实参的显式特化可以从其中取消。如上面的例子: template const char *max(const char *, const char *);其省略与显式指定模板参数一样。 10. 抛出异常可通过throw表达式来实现。如抛出一个popOnEmpty(类对象)的异常,表达式为throw popOnEmpty();同时在catch子句中,为了防止大型类对象的复制,可以将catch子句的异常声明改 为引用。 11. 在查找用来处理被抛出异常的catch子句时,因为异常而退出复合语句和函数定义,这个过程称 为栈展开。C++保证,随着栈的展开,尽管局部类对象的生命期是因为抛出异常而结束,但是所有 的析构函数将被调用。要重新抛出接受到

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档