下列关于类模板的描述中,正确的是( )。 A. 类模板的成员函数中可以用类型形参定义局部变量 B. 类模板的模板形参表中既可以有类型形参也可以有普通形参 C. 类模板中可以用类型形参声明成员变量 D. 类模板只能在类体中给出成员函数的实现
时间: 2024-03-23 14:43:13 浏览: 87
定义类模板T_Counter,实现基本类型数据的+、-、*、=、>>、<< 运算; 类模板T_Vector,实现向量运算; 类模板T_Matrix,实现矩阵运算
正确的选项是 A、B 和 C,即:
A. 类模板的成员函数中可以用类型形参定义局部变量;
B. 类模板的模板形参表中既可以有类型形参也可以有非类型形参;
C. 类模板中可以用类型形参声明成员变量。
关于选项 A,类模板中的成员函数可以使用类模板的类型形参作为变量类型来声明局部变量。例如:
```c++
template <typename T>
class MyClass {
public:
void myFunction() {
T myVariable; // 使用类型形参 T 声明局部变量
// ...
}
};
```
关于选项 B,类模板的模板形参表中可以同时包含类型形参和非类型形参,例如:
```c++
template <typename T, int N>
class MyClass {
public:
T myArray[N]; // 使用非类型形参 N 声明数组大小
// ...
};
```
关于选项 C,类模板中也可以使用类模板的类型形参来声明成员变量,例如:
```c++
template <typename T>
class MyClass {
private:
T myVariable; // 使用类型形参 T 声明成员变量
public:
// ...
};
```
关于选项 D,类模板的成员函数可以在类体中声明,但是它们的实现可以在类外定义。例如:
```c++
template <typename T>
class MyClass {
public:
void myFunction(); // 在类体中声明成员函数
};
template <typename T>
void MyClass<T>::myFunction() {
// 在类外定义成员函数的实现
// ...
}
```
阅读全文