内容简介:这个条款也可以改为“可以用编译器替换预处理器”,因为#define有很多的问题和不方便之处。当你使用了这个常量但获得一个编译错误信息时,可能会带来困惑,因为错误信息会提到1.6454 而不会提到名称本身,尤其是这个量又别人或在另外一个头文件中定义就更麻烦了。而改为
这个条款也可以改为“可以用编译器替换预处理器”,因为#define有很多的问题和不方便之处。
#define ASPEC 1.6454
当你使用了这个常量但获得一个编译错误信息时,可能会带来困惑,因为错误信息会提到1.6454 而不会提到名称本身,尤其是这个量又别人或在另外一个头文件中定义就更麻烦了。
而改为 const double ASPEC = 1.6454
就不会出现这种情况。
当const、指针结合在一起时应该注意‘*’与const的相对位置;
另一个要注意的问题是如果你想在class中设立这样一个作用域为这个类的变量,则让它成为一个static成员:
class G
{
static const int num = 5;
int sc[num];
};
然而,num是常量的声明式而非定义式,通常C++要求你对你所使用的任何东西提供一个定义式。
但如果它是一个class专属常量又是static,且为整数类型(integral type,例如int,char,bool),则需特殊处理。
只要不取它们的地址,你可以声明并使用它们而无须提供定义式。
但如果你取某个class专属常量的地址,或纵使你不取其地址但是编译器却(不正确的)坚持要看到一个定义式,
你就必须另外提供定义式如下:
const int G::num;
·#define是不提供任何封装的,也就是说没有private #define之类的东西,但是const可以。
另一个好用的东西是enum hack.像在类中加入下面的代码:
enum{Nun = 5};
用Nun作为5的一个代称,而且可以避免用指针来获取你的整数常量的地址,enum可以完成这个约束。而且它很实用,经常会用到。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Nginx 之父已被释放!俄民法有哪些相关条款?
- 华为HMS新条款曝光:EMUI系统要加平台广告
- React 16.0.0 发布,去除专利条款,改用 MIT 许可证
- Debian 因限制评测的授权条款拒绝英特尔的微码更新
- AWS等云服务商威胁开源软件生存,共用条款可终止开源滥用现象
- CSS 基础:块级元素、行内元素、替换元素、非替换元素
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
High Performance Python
Micha Gorelick、Ian Ozsvald / O'Reilly Media / 2014-9-10 / USD 39.99
If you're an experienced Python programmer, High Performance Python will guide you through the various routes of code optimization. You'll learn how to use smarter algorithms and leverage peripheral t......一起来看看 《High Performance Python》 这本书的介绍吧!