这篇文章主要分享了常用的3个C++小技巧,
1、头文件是引用<iostream.h>还是<iostream>?
编码中依旧有程序员依旧使用<iostream.h>
而不是<iostream>
库。实际上,这两个库是有区别的:
首先针对用.h作为标准头文件已经明确不推荐使用。
其次,在功能方面,<iostream>
包括IO类,且同时支持窄字符和宽字符;而<iostream.h>
却只支持以char为导向的流。
再次,在C++的iostream
接口标准进行了调整。 <iostream>
的接口与实现与<iostream.h>
存在差异。
最后, <iostream>
组件声明于std命名空间中,而<iostream.h>
组件是全局性的。两者混合使用存在一定的风险。需要谨慎。
2、逗号分割表达式
逗号表达式可能包含一个或多个用逗号分隔的子表达式,例如:
if(++x, --y, cin.good())
上面的if表达式中,每个语句都会被执行到,但是整个if的条件实际上是以第三个表达式值为if的条件值。cin.good()
默认值为1,只有当输入值和定义变量类型不一致的时候变为0。
在循环语句中情况也是一样。如:
while( ++i, --j)
{
;
}
整个while循环只有当j=0的时候才会停止。
3、在main函数之前运行代码
通畅全局对象是在程序开始之前之构造的,这个函数也会在main()开始之前返回。
如:
class Logger
{
public:
Logger()
{
activate_log();
}
void activate_log()
{
cout<<"hello"<<endl;
}
};
Logger log;
int main()
{
record * prec=read_log();
}
这个函数在main之前就被执行并进行了返回。
到此这篇关于分享常用的3个C++小技巧的文章就介绍到这了,更多相关C++小技巧内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:分享常用的3个C++小技巧
基础教程推荐
- 初始化列表*参数*评估顺序 2021-01-01
- 非静态 const 成员,不能使用默认赋值运算符 2022-10-09
- 如果我为无符号变量分配负值会发生什么? 2022-01-01
- 为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如 2022-09-16
- 为什么 RegOpenKeyEx() 在 Vista 64 位上返回错误代码 2021-01-01
- 通过引用传递 C++ 迭代器有什么问题? 2022-01-01
- GDB 显示调用堆栈上函数地址的当前编译二进制文 2022-09-05
- CString 到 char* 2021-01-01
- 为什么派生模板类不能访问基模板类的标识符? 2021-01-01
- 我应该对 C++ 中的成员变量和函数参数使用相同的名称吗? 2021-01-01