[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. fiery xray

    fiery xray New Member

    Joined:
    11 Jul 2011
    Messages:
    7
    Likes Received:
    2
    Reputations:
    3
    есть два разных оператора - new и operator new.

    PHP:
    Foo *= new Foo;
    здесь вызывается оператор new.
    он всегда действует стандартным образом: сначала выделяется память для создаваемого объекта, потом вызывается конструктор.

    при этом выделением памяти занимается именно оператор operator new: он выделяет нужную область памяти и возвращает указатель на неё
     
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    А по-моему, это полный бред. Потрассировал код в студии, сразу вызывается
    PHP:
    void *__CRTDECL operator new(size_t size_THROW1(_STD bad_alloc);
    который и выделяет память. Если не удалось выделить - он же кидает исключение.

    UPD: хотя, конечно, трассировка может не показывать упомянутого "просто new", но и нет смысла тогда говорить о нем.

    UPD2: да, почитал немного и вспомнил, что можно же использовать operator new явно. Тогда получается, что действительно есть new и есть operator new.
     
    #6642 GRRRL Power, 27 Jul 2011
    Last edited: 27 Jul 2011
  3. fiery xray

    fiery xray New Member

    Joined:
    11 Jul 2011
    Messages:
    7
    Likes Received:
    2
    Reputations:
    3
    operator new выделяет память, но не вызывает конструктор
     
    1 person likes this.
  4. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Совершенно верно и по трейсам видно, что он не вызывает конструктор. Но ключевое слово new каким-то образом вызывает operator new. А при выходе из operator new магическим образом вызывается конструктор.

    И туда совершенно магическим образом попадает sizeof

    Вопрос снят - никакой магии. new - совокупность операций.

    PHP:
       Foo *= 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)  
     
    #6644 tim-oleksii, 27 Jul 2011
    Last edited: 27 Jul 2011
  5. Andrushka25

    Andrushka25 New Member

    Joined:
    19 Jul 2010
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    как изменить шрифт в консольном приложение?
    можно на конкретном примере?!
     
  6. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    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-ок
     
  7. ubuntu

    ubuntu New Member

    Joined:
    28 Dec 2009
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    как сделать с помощью курл переход на следующую страницу после авторизации? (если можно то пример :rolleyes: )
     
    #6647 ubuntu, 3 Aug 2011
    Last edited: 3 Aug 2011
  8. NetAng

    NetAng Member

    Joined:
    29 Dec 2010
    Messages:
    75
    Likes Received:
    12
    Reputations:
    5
    Отправляешь post-запрос для авторизации, и получаешь страницу в которой ты уже авторизован.
    Пример отправки post-запроса.
    Или какую авторизацию ты имеешь ввиду?
     
  9. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    здравствуйте! у меня возникла проблема с базами данных xls в mfc. задача-то, на самом деле, простая: мне надо записать значения в таблицу. но! как мне проверить существование таблицы? если ее нет, я создам, а если есть, то продолжу записывать. вся сложность в том, что базы данных xls Не поддерживают условных инструкций(типа IF) и сложных функций (типа TABLE EXISTS). как мне можно проверить существование таблицы в базе?!
    Заранее спасибо!
     
  10. ubuntu

    ubuntu New Member

    Joined:
    28 Dec 2009
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    не, авторизоваться могу. а вот уже в личном кабинете нужно сделать переход на другую страницу и изменить пароль к примеру.

    пример.
    я авторизуюсь тут: https://www.icq.com/login/en

    далее не могу сделать переход сюда
    https://www.icq.com/change-password/en
    для последующего изменения пароля.
     
  11. NetAng

    NetAng Member

    Joined:
    29 Dec 2010
    Messages:
    75
    Likes Received:
    12
    Reputations:
    5
    Думаю тут надо работать с 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 не может их принимать т.к. он не интерпретирует полученную страницу.
     
    #6651 NetAng, 3 Aug 2011
    Last edited: 3 Aug 2011
  12. ubuntu

    ubuntu New Member

    Joined:
    28 Dec 2009
    Messages:
    34
    Likes Received:
    0
    Reputations:
    0
    с куками как только уже не издевался. а вот насчет яваскипта спасибо- посмотрю.
     
  13. KREIVEN

    KREIVEN New Member

    Joined:
    22 Dec 2010
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Что в этом коде неправильно,помогите


    #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;
    }
     
  14. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    ты именное пространство 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;
     }
    
     
  15. KREIVEN

    KREIVEN New Member

    Joined:
    22 Dec 2010
    Messages:
    17
    Likes Received:
    0
    Reputations:
    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;-необъявленный индетификатор а как его задать по справке ни чё нету
     
  16. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    так у тебя там на конце 1 а должна быть l
    endl
    как end line
     
  17. KREIVEN

    KREIVEN New Member

    Joined:
    22 Dec 2010
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    заменил на endi,но надо было L тока всё равно неправильно заработала щас необьявлен cout
     
    #6657 KREIVEN, 5 Aug 2011
    Last edited: 5 Aug 2011
  18. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    мда! у меня нет слов.
    скопируй этот код :
    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;
    }
     
  19. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    endl, а не endi блеять
     
    2 people like this.
  20. KREIVEN

    KREIVEN New Member

    Joined:
    22 Dec 2010
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    да уже понял что не endi
     
Thread Status:
Not open for further replies.