Tôi bị nhầm lẫn với cách mẫu C++ khởi tạo. Tôi có một đoạn mã:Tạo bản mẫu trong C++
template <class T, int arraySize>
void test1(T (&array)[arraySize])
{
cout << typeid(T).name() << endl;
}
template<class T>
void test2(T &array)
{
cout << typeid(T).name() << endl;
}
int main()
{
int abc[5];
test1(abc);
test2(abc);
return 0;
}
Dưới đây là những câu hỏi của tôi:
1. Làm thế nào để kích thước của mảng abc sẽ được chuyển cho Test1 (tham số arraySize)?
2. Trình biên dịch C++ xác định loại T trong hai mẫu như thế nào?
Bạn có nghĩa là một cái gì đó như 'test1 (abc)'? Cái thứ hai không có ý nghĩa gì cả. Bạn có một hàm 'test2 ' và bạn đang lập chỉ mục nó như thể nó là một mảng ?! –
Shahbaz