现在的位置: 首页 > 综合 > 正文

C++基本语法之——“一次定义”规则

2014年02月13日 ⁄ 综合 ⁄ 共 642字 ⁄ 字号 评论关闭

1、任何翻译单元都不该含有对任一变量、函数、类类型、枚举类型或模板超过1次的定义。

 

2、一个表达式是被潜在计算的,除非,它出现在需要一个整型常量表达式的地方(5.19),或者是sizeof操作符的操作数,或者是typeid操作符的操作数并且表达式并不指派一个多态类类型的左值(5.2.8)。

这里要补充说明的是,所谓需要一个整型常量表达式的地方:比如,case语句,还有为枚举赋值等等。

如果一个对象或未被重载的函数的名字在一个被潜在计算的表达式中出现,那么该对象或未被重载的函数被使用。

一个虚成员函数被使用,如果它不是纯虚函数。

当从一个被潜在计算的表达式中引用了一个被重载的函数,如果该函数被重载解决方案所选择,那么该重载函数被使用。

[注:这覆盖了对命名函数的调用(5.2.2),操作符重载(条款13),用户自定义转换(12.3.2),为占位new的分配函数(5.3.4),以及非默认初始化(8.5)。一个拷贝构造器被使用,即使该调用实际上被实现省略。]

为一个类的分配或释放函数被一个出现在一个潜在计算的表达式中的new表达式使用,在5.3.4和12.5中指定。

为一个类的释放函数被一个出现在一个潜在计算的表达式中的delete表达式使用,在5.3.4和12.5中指定。

为一个类的拷贝赋值函数被一个隐式定义的为另一个类的拷贝赋值函数所使用,在12.8中指定。

一个类的默认构造器被默认初始化所使用,在8.5中指定。

一个类的构造器在8.5中指定使用。

一个类的默认析构器在12.4中指定使用。

抱歉!评论已关闭.