Welcome Guest ( Log In | Register )

Help | Search | Members | Calendar

Pages: (3) [1] 2 3   ( Go to first unread post )
C++ Puzlle, А может кто нить в этом духе выкладыва
« Next Oldest | Next Newest » Track this topic | Email this topic | Print this topic
DZUK
Posted: Nov 9 2007, 00:57

Light Bringer

Group: Elite Member
Member No.: 2803

Joined: March 29, 2007

Вот погулял по старым топикам и наткнулся на такие вот интерестные вещи, может продолжим эту тенденцию?

--------------------
Обьединенные части целого есть нечто большее, чем просто их сумма.
 
     Top
firewall
Posted: Nov 9 2007, 00:59

Challenger

Group: Elite Member
Member No.: 2010

Joined: August 16, 2006

начинай dry.gif

--------------------
Newbie(g)
 
     Top
DZUK
Posted: Nov 9 2007, 01:12

Light Bringer

Group: Elite Member
Member No.: 2803

Joined: March 29, 2007

Прошу

The following code causes an infinite loop. Can you spot the problem and explain why?


class Base
{
public:
Base() {}
virtual void func() { /* do something */ }
};

class Derived : public Base
{
public:
Derived() {}
virtual void func()
{
Base:func();
/* do something else */
}
};

int main()
{
Derived d;
d.func(); // Never returns!
}

стырил отсюда http://www.devmaster.net

--------------------
Обьединенные части целого есть нечто большее, чем просто их сумма.
 
     Top
firewall
Posted: Nov 9 2007, 01:53

Challenger

Group: Elite Member
Member No.: 2010

Joined: August 16, 2006

ну.. это елементарно! )
Base:func() = Derived:func(), т.к. функция Base:func() из виртуал.

кстати, разницы нету Derived:func() virtual или нет..

--------------------
Newbie(g)
 
     Top
DZUK
Posted: Nov 14 2007, 23:22

Light Bringer

Group: Elite Member
Member No.: 2803

Joined: March 29, 2007

Base::func ()!=Derived::func ()
глюк в другом

--------------------
Обьединенные части целого есть нечто большее, чем просто их сумма.
 
     Top
Dream_InspectoR
Posted: Nov 15 2007, 00:34

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

скорее всего в дырявом компиляторе. Т.к. на моей VS 2003, как и на gcc 4.1.1 он еще как возвращается из функции smile.gif

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
DZUK
Posted: Nov 15 2007, 18:13

Light Bringer

Group: Elite Member
Member No.: 2803

Joined: March 29, 2007

а ты копи пастом делал?
Тоже потестил на ВС 2003, попробуй Ф5 а не ктрл+ф5

--------------------
Обьединенные части целого есть нечто большее, чем просто их сумма.
 
     Top
Dream_InspectoR
Posted: Nov 15 2007, 18:23

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

По всякому выходит и Ф5 и CTRL+F5 . В gcc нету ctrl и не ctrl smile.gif Там если что не то сразу валится с core dump )

Да копипастом но подправил там у тебя одно двоеточие должно стоять два а то просто не компилится.

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
DZUK
Posted: Nov 15 2007, 20:52

Light Bringer

Group: Elite Member
Member No.: 2803

Joined: March 29, 2007

ги, баг именно в двоеточии, у мну все компилится.

просто base:func (); тоже что и
base:
func ();

base: понимается как label, а не как вызов функции base::func ().

--------------------
Обьединенные части целого есть нечто большее, чем просто их сумма.
 
     Top
DZUK
Posted: Nov 15 2007, 21:02

Light Bringer

Group: Elite Member
Member No.: 2803

Joined: March 29, 2007

Ваша очередь, предлагайте пазл.

--------------------
Обьединенные части целого есть нечто большее, чем просто их сумма.
 
     Top
Dream_InspectoR
Posted: Nov 15 2007, 21:04

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

Хм smile.gif У меня all warnings as errors, наверное наорал, что base это зарезервированное слово smile.gif

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
DZUK
Posted: Nov 15 2007, 22:12

Light Bringer

Group: Elite Member
Member No.: 2803

Joined: March 29, 2007

warning там unreferenced label base

А что base заризервированное слово?


--------------------
Обьединенные части целого есть нечто большее, чем просто их сумма.
 
     Top
Dream_InspectoR
Posted: Nov 15 2007, 22:15

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

Нет ты прав варнинг в другом smile.gif

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
Nemra®
Posted: Feb 26 2008, 16:03

Кандидат

Group: Elite Member
Member No.: 7

Joined: February 24, 2003

Even not funny, guys, you are trying to solve a puzzle problem by compiling smile.gif You have to do it without compilation, that's the point of the question...

Куда катится мир smile.gif

--------------------
Экстрасекс по вызову. Снимаю, порчу.
 
     Top
Dream_InspectoR
Posted: Feb 26 2008, 16:50

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

Фтопку катится. Я компил потому что ничего не нашел, а две точки подсознательно сразу отбросил как typo smile.gif

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
aramt
Posted: Feb 27 2008, 10:55

Wise Dreamer

Group: Elite Member
Member No.: 597

Joined: February 4, 2004

В одном месте упущена двоеточие, всё остальное правильно написано. Тут бесконечного цыкла быть не может.
В чем проблема? unsure.gif
Может пазл неправильно скопировал?
 
      Top
Dream_InspectoR
Posted: Feb 27 2008, 14:32

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

Ответ на вопрос уже дан, двоеточие как раз правильно, оно воспринимается как лейбл. В следствии чего код тупо вызывает сам себя.

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
Master of Puppets
Posted: Feb 27 2008, 20:27

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

отх, а я сразу решил cool.gif только писать решение не было смысла, его уже написали. Продолжим? smile.gif

--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
Dream_InspectoR
Posted: Feb 27 2008, 23:09

Eye of the Vision

Group: Moderator
Member No.: 614

Joined: February 10, 2004

Ну давайте, у кого какие предложения?

--------------------
Kill'em!!! Kill'em ALL!!!
 
        Top
Master of Puppets
Posted: Dec 14 2009, 15:18

Eye of the Vision

Group: Moderator
Member No.: 2067

Joined: August 29, 2006

Предлагаю воскресить топик: вот для начала простая задачка. Что напечатает данная программа?

CODE

#include <iostream>
using namespace std;
int main()
{
       int a = 4;
       if(5 >= a >= 3) {
               cout << ":(\n";
       } else {
               cout << ":)\n";
       }
       return 0;
}


--------------------
Master of Puppets, I'm pulling your strings, twisting your mind and smashing your dreams!
⠠⠵
 
       Top
40 replies since Nov 9 2007, 00:57 Track this topic | Email this topic | Print this topic
Pages: (3) [1] 2 3 
<< Back to Programming languages

 




Arminco Global Telecommunications