1 内联函数
C++推荐
const和enum替代宏常量
inline去替代宏函数
宏缺点:
1、不能调试
2、没有类型安全的检查
3、有些场景下非常复杂,容易出错,不容易掌握要求实现ADD宏函数,加括号防止变量与其他未知变量先进行计算
inline
#define ADD(x, y) ((x) + (y))
int main()
{
cout << ADD(1, 2) << endl;
return 0;
}
inline int Add(int x, int y)
{
return x + y;
}
int main()
{
int ret = Add(1, 2);
cout << ret << endl;
return 0;
}
2 auto
//auto (C++11)
int TestAuto()
{
return 10;
}
int main()
{
int a = 10;
auto b = a;
auto c = 'a';
auto d = TestAuto();
cout << typeid(a).name() << endl;
cout << typeid(b).name() << endl;
cout << typeid(c).name() << endl;
cout << typeid(d).name() << endl;
return 0;
}
3 for
基于范围的for循环(C++11)
不好用
//for 基于范围的for循环(C++11) 难用
void TestFor()
{
int arr[] = { 1, 2, 3, 4, 5 };
for (auto& a : arr)
{
a = a + 10;
}
for (auto a : arr)
{
cout << a << " ";
}
}
int main()
{
TestFor();
return 0;
}
4 nullptr
为了提高代码的健壮性,在后续表示指针空值时建议最好使用nullptr NULL本质是0
//nullptr
void f(int)
{
cout << "f(int)" << endl;
}
void f(int*)
{
cout << "f(int*)" << endl;
}
int main()
{
f(0);
f(NULL);
f(nullptr);
return 0;
}