Будет интересно только программистам, знающим C++.
Небольшая загадка. Предугадайте, что напечатает следующая программа, не запуская ее. Потом проверьте себя, если интересно. Комменты не скрываются.
Небольшая загадка. Предугадайте, что напечатает следующая программа, не запуская ее. Потом проверьте себя, если интересно. Комменты не скрываются.
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
map<int, string> m;
double d = 123456.789;
m[0] = d;
cout << "m[0]=" << m[0];
return 0;
}
no subject
Date: 2010-07-06 07:29 am (UTC)m[0] = d; - при исполнении выглядит как
string& x = m.operator[](0); // что само по себе очень странно
x.ctor((char)d); // пустой блок памяти вернулся, вызывается ктор
ну, а 123456.789 транформируется в 123456 = 0x0001e240, последний байт = 40 = '@'
Очередной отличный выстрел в ногу.
no subject
Date: 2010-07-06 07:31 am (UTC)no subject
Date: 2010-07-06 07:38 am (UTC)