内容简介:这个条款也可以改为“可以用编译器替换预处理器”,因为#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 基础:块级元素、行内元素、替换元素、非替换元素
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法竞赛入门经典
刘汝佳、陈锋 / 2012-10 / 52.80元
《算法竞赛入门经典:训练指南》是《算法竞赛入门经典》的重要补充,旨在补充原书中没有涉及或者讲解得不够详细的内容,从而构建一个较完整的知识体系,并且用大量有针对性的题目,让抽象复杂的算法和数学具体化、实用化。《算法竞赛入门经典:训练指南》共6章,分别为算法设计基础、数学基础、实用数据结构、几何问题、图论算法与模型和更多算法专题,全书通过近200道例题深入浅出地介绍了上述领域的各个知识点、经典思维方式......一起来看看 《算法竞赛入门经典》 这本书的介绍吧!