美文网首页C++
《C++ Primer》6.5 特殊用途语言特性

《C++ Primer》6.5 特殊用途语言特性

作者: codinRay | 来源:发表于2017-03-28 10:11 被阅读0次

1.默认实参

默认实参放在后面,需要传入的参数放在前面。

传入的参数会从前到后,找到第一个可以传入的参数传入。

int func(int a, int b = 10, int c = 15) {
    // 需要输入的参数放在前面
    return a * 3 + b * 2 + c;
}
int main() {
    int d = 5;
    cout << func(d);
}

2.内联函数——inline

内联函数就是在调用点上“内联地展开”。

note : 内联说明只是向编译器发出的一个请求,编译器可以选择忽略这个请求

3.constexpr函数

函数体内必须有且只有一条return语句。

constexpr int new_sz() { return 42; }
constexpr int foo = new_sz(); // 正确,foo是一个常量表达式

为了能在编译过程中随时展开,constexpr函数被隐式地指定为内联函数

4.调试帮助

assert预处理宏

assert宏定义在cassert头文件中。预处理名字由预处理器而非编译器管理,因此我们可以直接使用预处理名字而无须提供using声明。我们应该使用assert而不是std::assert,也不需要为assert提供using声明。

assert()包含一个合理的条件,如果条件不成立则中止编译。

int shortL = 5, longL = 10;
assert(shortL < longL);

NDEBUG预处理变量

__func__ // 存放当前调试函数的名字
__FILE__ // 存放文件名的字符串字面值
__LINE__ // 存放当前行号的整形字面值
__TIME__ // 存放文件编译时间的字符串字面值 
__DATE__ // 存放文件编译日期的字符串字面值

相关文章

网友评论

    本文标题:《C++ Primer》6.5 特殊用途语言特性

    本文链接:https://www.haomeiwen.com/subject/kgtjottx.html