[ 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. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Врят ли имеются в виду потоки, поэтому лучше использовать например циклы.
    for (int i = 0; i < N; i++) {
    MoveFirstCar();
    MoveSecondCar();
    sleep( ... );
    }

    или же копай в сторону многопоточности ( см статью в "Статьях" )
     
  2. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    Не , надо как раз много поточность , просто не могу найти норм инфу по ней, про машинки я привел ради примера))
     
  3. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Я же написал - посмотри в "Статьях". Или поищи в гугле. Информации много.
     
  4. _antony

    _antony Elder - Старейшина

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    Ничего лучше Джеффри Рихтера не найдете , читать просто обязательно , от корки до корки , можно и 2 раза.
     
  5. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    Вот снова засел за с++, продолжаю обучение...

    В общем вопрос состоит в таком: я учу сейчас ссылки и указатели. Теперь пожалуйста, объясните мне, что возвращается в каждой(func и funk2) ф-и и почему. Заранее спасибо.

    Code:
    #include <iostream>
    using namespace std;
    
    class Cat
    {
    public:
    	Cat() { cout << "constructor...\n"; }
    	~Cat() { cout << "destructor...\n"; }
    	Cat(Cat&) { cout << "copy - constructor...\n"; }
    	void SetAge( int age ) { Age = age; }
    	int GetAge() const { return Age; }
    private:
    	int Age;
    };
    
    
    Cat &func(Cat &cat1)
    {
    	cout << "func...\n";
    	cat1.SetAge(5);
    	cout << "Age is " << cat1.GetAge() << endl;
    	return cat1;
    }
    
    Cat *func2(Cat *cat1)
    {
    	cout << "func2...\n";
    	cat1->SetAge(7);
    	cout << "Age is " << cat1->GetAge() << endl;
    	return cat1;
    }
    
    void main()
    {	
    	cout << "Making a cat1...\n";
    	Cat cat1;
    	cout << "going to func...\n";
    	func(cat1);
    	cout << "back to main...\n\n";
    	
    	cout << "Making a cat2...\n";
    	Cat cat2;
    	cout << "going to func2...\n";
    	func2(&cat2);
    	cout << "back to main...\n\n";	
    }
    
     
  6. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Рано ему еще Рихтера читать.
    Возвращаются ссылка и указатель на измененный объект. код вижу не полностью так как с телефона. Вопрос почему странный. Потому что ты так их определил...
     
    #3266 Fata1ex, 6 Jul 2009
    Last edited: 6 Jul 2009
  7. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    Меня интересует что содержится в ссылке, а что в указателе на момент возврата - адрес что-то другое...

    В чем разница, если я напишу так:

    Code:
    Cat &func2(Cat *cat1)
    {
    	cout << "func2...\n";
    	cat1->SetAge(7);
    	cout << "Age is " << cat1->GetAge() << endl;
    	return *cat1;
    }
    а не так:

    Code:
    Cat *func2(Cat *cat1)
    {
    	cout << "func2...\n";
    	cat1->SetAge(7);
    	cout << "Age is " << cat1->GetAge() << endl;
    	return cat1;
    }

    что означает значок * или & у имени ф-и? и что в итоге возвратится - адрес что-то другое?
     
    #3267 horlyk, 6 Jul 2009
    Last edited: 7 Jul 2009
  8. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    ссылки сделаны для удобства использования. к методам класса ты будешь обращаться через ., а при указетеле через ->. Больше никакой принципиальной разницы нету. На уровне ассемблера в обоих случаях возвратится адрес.
     
  9. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    При передаче аргумента по указателю использовать все время разименовывание обычно неудобно и код выглядит некрасиво, хотя здесь это не очень заметно.
     
    1 person likes this.
  10. Alpha][

    Alpha][ Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    Посоветуйте что почитать про работу с устройствами , подключенными через usb и com . язык с++ .
     
  11. _antony

    _antony Elder - Старейшина

    Joined:
    16 Jul 2008
    Messages:
    80
    Likes Received:
    43
    Reputations:
    0
    Агурова , Уолтера Они .
     
  12. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    Ra$cal, Fata1ex, спасибо. То есть если возле имени ф-и стоит значок ссылки или указателя, то ф-я должна вернуть адрес, я правильно понял?
     
    #3272 horlyk, 7 Jul 2009
    Last edited: 7 Jul 2009
  13. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Cat* func1(Cat *cat1)
    Cat& func2(Cat *cat1)

    Возможно так будет понятнее. То что стоит слева от названия функции в данном случае является типом возвращаемого значения. Т.е. первая функция возвращает указатель на объект класса Cat, а вторая ссылку на него.
     
  14. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    нужно заюзать регулярки. скачал пак с оф-сайта (pcre.org), подключил либы, всё хорошо. только вот за прогой нужно таскать dll весом ~150 кб. есть несколько проблем:
    1) убрать длл. что бы был только exe, и при этом он везде работало.
    2) желательно - уменьшить размер. (там полно не нужных мне функций)

    пробовал сделать и то и другое. подключил к проекту нужные заголовки и файлы. всё-бы ничего, но компилятор ругается:

    пробовал подключать pcre либы и гуглить - не помогло.
    собственно сабж: как это сделать? либо, есть ли более лёгкие(возможно, менее функциональные) реализации регулярок?
     
    #3274 mr.The, 8 Jul 2009
    Last edited: 8 Jul 2009
  15. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    попробуй регэкспы из буста поюзать. там есть статическая линковка. а на счет размреа - хз. там много кода нужно чтоб это работало. нужно идти на жертвы.
     
    1 person likes this.
  16. fker

    fker Member

    Joined:
    26 Nov 2008
    Messages:
    135
    Likes Received:
    64
    Reputations:
    -1
    можно ли с помощью cout<< делать форматный вывод, типа printf("%3d",a) ?
     
  17. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    - format flags
    - i/o manipulators
    - функции класса ios
    - собственные функции ввода/вывода и манипуляторы
     
    #3277 Fata1ex, 9 Jul 2009
    Last edited: 9 Jul 2009
  18. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Советую тоже использовать буст, как подсказал коллега выше )
    При статической линковке размер будет ~ +1m
     
    1 person likes this.
  19. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    заюзал буст. линковка вроде-бы статическая, правда я с ним натрахался, и пришлось юзать микромягкий компилятор(варнинг на варнигне, но компилится, и работает). простая прога с 1-й регуляркой и только 1 либой(boost/regex.hpp) висит 167 КБ. upx пакует ~до 80 кб. многовато, но подойдёт. щас попробую уменьшить размер.

    UPD линковка динамическая. меньше уже не будет, а если и будет, то это нужно слишком глубоко лезть..
     
    #3279 mr.The, 9 Jul 2009
    Last edited: 9 Jul 2009
  20. Lee_fx

    Lee_fx Elder - Старейшина

    Joined:
    27 Sep 2008
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    Как будет выглядеть функция циклического сдвига влево для битов?, т.е.
    char a = 222; //a = 11011110
    rotate(a); //a = 10111101
     
Thread Status:
Not open for further replies.