есть два разных оператора - new и operator new. PHP: Foo *f = new Foo; здесь вызывается оператор new. он всегда действует стандартным образом: сначала выделяется память для создаваемого объекта, потом вызывается конструктор. при этом выделением памяти занимается именно оператор operator new: он выделяет нужную область памяти и возвращает указатель на неё
А по-моему, это полный бред. Потрассировал код в студии, сразу вызывается PHP: void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc); который и выделяет память. Если не удалось выделить - он же кидает исключение. UPD: хотя, конечно, трассировка может не показывать упомянутого "просто new", но и нет смысла тогда говорить о нем. UPD2: да, почитал немного и вспомнил, что можно же использовать operator new явно. Тогда получается, что действительно есть new и есть operator new.
Совершенно верно и по трейсам видно, что он не вызывает конструктор. Но ключевое слово new каким-то образом вызывает operator new. А при выходе из operator new магическим образом вызывается конструктор. И туда совершенно магическим образом попадает sizeof Вопрос снят - никакой магии. new - совокупность операций. PHP: Foo *f = new Foo; 004116BD push 1 004116BF call operator new (4112A3h) 004116C4 add esp,4 004116C7 mov dword ptr [ebp-0E0h],eax 004116CD mov dword ptr [ebp-4],0 004116D4 cmp dword ptr [ebp-0E0h],0 004116DB je main+70h (4116F0h) 004116DD mov ecx,dword ptr [ebp-0E0h] 004116E3 call Foo::Foo (4112C6h)
Code: #include "stdafx.h" #include <windows.h> #include <iostream> using namespace std ; int _tmain(int argc, _TCHAR* argv[]) { // Obtain the Console handle HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // Obtain the Console handle PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx = new CONSOLE_FONT_INFOEX() ; // set the size of the CONSOLE_FONT_INFOEX lpConsoleCurrentFontEx->cbSize = sizeof(CONSOLE_FONT_INFOEX); // get the current value GetCurrentConsoleFontEx(hConsole,0,lpConsoleCurrentFontEx); // set size to be 8x18, the default size is 8x16 lpConsoleCurrentFontEx->dwFontSize.X = 8; lpConsoleCurrentFontEx->dwFontSize.Y = 18; // submit the settings SetCurrentConsoleFontEx(hConsole,0,lpConsoleCurrentFontEx); cout<<"Hello"<<endl; cin.get(); // wait return 0; } но такое будет только в wista и 7 рабоать. если утебя старая стулидя: вызывай функции динамически или объявляй экспорт из соответствующих dll-ок
Отправляешь post-запрос для авторизации, и получаешь страницу в которой ты уже авторизован. Пример отправки post-запроса. Или какую авторизацию ты имеешь ввиду?
здравствуйте! у меня возникла проблема с базами данных xls в mfc. задача-то, на самом деле, простая: мне надо записать значения в таблицу. но! как мне проверить существование таблицы? если ее нет, я создам, а если есть, то продолжу записывать. вся сложность в том, что базы данных xls Не поддерживают условных инструкций(типа IF) и сложных функций (типа TABLE EXISTS). как мне можно проверить существование таблицы в базе?! Заранее спасибо!
не, авторизоваться могу. а вот уже в личном кабинете нужно сделать переход на другую страницу и изменить пароль к примеру. пример. я авторизуюсь тут: https://www.icq.com/login/en далее не могу сделать переход сюда https://www.icq.com/change-password/en для последующего изменения пароля.
Думаю тут надо работать с cookies. Попробуй использовать опции для работы с куками. Принимай куки с помощью опции CURLOPT_COOKIEJAR. Потом, когда уже запрашиваешь страницу (https://www.icq.com/change-password/en), то используй опцию CURLOPT_COOKIEFILE чтобы передать твои cookies серверу. Еще можешь использовать curl_easy_setopt(curl, CURLOPT_COOKIE, "name=значение;name2=значение, где уже сам будешь указывать нужные куки. P.S. Посмотри еще там на сайте, не передаются ли какие нибудь куки через javascript, т.к. по моему curl не может их принимать т.к. он не интерпретирует полученную страницу.
Что в этом коде неправильно,помогите #include "stdafx.h" #include <iostream.h> int main() { int x=5; int y=7; cout<<"\n"; cout<<x+y<<" " << x*y; cout<<"\n"; return 0; }
ты именное пространство std забыл подключить: Code: #include "stdafx.h" #include <iostream> using namespace std; int main() { int x=5; int y=7; cout<<"\n"; cout<<x+y<<" " << x*y; cout<<"\n"; return 0; }
Проверьте ещё раз код пжл #include "stdafx.h" #include <iostream> using namespase std; int main() { cout <<"Hello there.\n"; cout <<"Here is 5:" << 5 << "\n"; cout <<"The manipulator end1 writes a new line to the screen."; cout <<end1; cout <<"Here is a very big number:\t" <<7000 <<end1; cout <<"Here is the sum of 8 and 5:\t" << 8+5 << end1; cout <<"Here is a fraction:\t\t" <<(float) 5/8 <<end1; cout <<"And a very very big number:\t"; cout <<(double)7000*7000 << end1; cout <<"Don,t forget to replase Ivan Ivanov with you name...\n"; cout <<"Ivan Ivanov is a C++ programmer!\n"; return 0; } У меня при компиляции выдаёт ошибку end1;-необъявленный индетификатор а как его задать по справке ни чё нету
мда! у меня нет слов. скопируй этот код : Code: #include "stdafx.h" #include <iostream> using namespase std; int main( void ) { cout << "Hello there.\n"; cout << "Here is 5:" << 5 << "\n"; cout << "The manipulator end1 writes a new line to the screen."; cout << endl; cout << "Here is a very big number:\t" <<7000 <<endl; cout << "Here is the sum of 8 and 5:\t" << 8+5 << endl; cout << "Here is a fraction:\t\t" <<(float) 5/8 <<endl; cout << "And a very very big number:\t"; cout << (double)7000*7000 << endl; cout << "Don,t forget to replase Ivan Ivanov with you name...\n"; cout << "Ivan Ivanov is a C++ programmer!\n"; return 0; }