Có bao nhiêu hàm calc được sinh ra trong chương trình sau:

template<class T>
T calc(T a) {
return a < 0 ? -a : a;
}

int main() {
cout << calc<char>(-127) + calc(‘A’) + calc(4);
}

Các đáp án:

  • A. 2

  • B. Lỗi cú pháp

  • C. 1

  • D. 3

Phân tích:

  • calc<char>(-127)T = char

  • calc('A')'A' là một char literal → T = char

  • calc(4)4int literal → T = int

=> Có 2 kiểu được sử dụng:

  • char

  • int

=> Như vậy sẽ sinh ra 2 phiên bản của hàm calc.

Để lại một bình luận