C 在使用的时候莫名的会出一些编译错误,有时候只是语法的特定写法不一致,所以记录一下。
1. 不允许使用默认参数
默认参数需要写在定义部分,不能写在实现部分。
代码语言:javascript复制const ARRAY_DEFAULT_CAPACITY = 8;
template <class T>
class Array{
Array( int capacity ); // 有效
Array( int capacity = ARRAY_DEFAULT_CAPACITY ); // 有效
}
// 错误, 不允许使用默认参数
template<class T>
Array<T>::Array( int initCapacity = ARRAY_DEFAULT_CAPACITY ){
...
}
2. 空参数实例化错误
使用空参数实例化的时候,不能使用(),会被编译器识别为函数定义
代码语言:javascript复制// 使用上述定义
Array<float> arr(10) // 正确 容量为10
Array<float> arr(); // 错误 容量为默认长度 无法实例化
Array<float> arr; // 正确 容量为默认长度 可以实例化