Là một hàm không được gọi bên trong một typeid? Hãy xem xét mã bên dưới.Chức năng không được gọi là bên trong typeid?
#include <iostream>
#include <typeinfo>
using namespace std;
int mul10(int &s)
{
static int count = 1;
cout << "Evaluating call " << count << endl;
count++;
s *= 10;
return(s);
}
int main()
{
int i = 5;
cout << typeid(mul10(i)).name() << endl;
cout << i << endl;
return(0);
}
Vì vậy, đây là sản lượng
int
5
Vì vậy, rõ ràng giá trị của i
không thay đổi và cũng là chức năng mul10
đã không thực sự gọi. Đó là cách các đối số typeid được đánh giá?
Không cần thiết phải gọi hàm, loại kết quả đã được trình biên dịch biết đến. –
http://en.cppreference.com/w/cpp/language/typeid –
Nó nhiều hơn "không cần thiết"; trình biên dịch * không được * gọi hàm trong trường hợp này. Ví dụ. chương trình này là chính xác: 'int x() {return 1/0; } int main() {typeid (x()); } ' –