Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Игра в С++, 7-й тайм 
V
    Опции темы
UnrealMan
Дата 30.8.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(FiMa1 @  30.8.2007,  10:50 Найти цитируемый пост)
но это мне тоже было известно... 

А что ты тогда искал в пункте 3.3? Про accessibility там, естественно, ничего нет; вопросы доступности рассматриваются в главе 11 Member access control.
PM MAIL   Вверх
Mayk
Дата 30.8.2007, 19:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(FiMa1 @  30.8.2007,  12:47 Найти цитируемый пост)

2. Проверка способностей к разбору чужого кода + знание побитовых операций, префиксного, постфиксного декрементов в целом...

Как знание префиксных/постфиксных она отдалена от реальности.  
Разбор
Код

for(std::vector<int>::iterator it = vec.begin(); it != vec.end(); it++ )

vs
Код

for(std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it )

принесёт гораздо больше полезной информации. 

Цитата(FiMa1 @  30.8.2007,  12:47 Найти цитируемый пост)
class A
{
    // ... какое-то тело
};
int main()
{
    A *p;
    A obj; // здесь возникнет ошибка компиляции
    return 0;
}

вот ешё один изуверский способ завалить в A obj. Правда выходим за рамки тела класса. Но совсем чуть чуть.
Код

class A
{
    public:
    void operator* ( A p ){}
}A,p;

int main()
{
    A* p; // валидно.  вызывает op* для переменных A и p.
    A obj; // ерунда
}



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
jurgal
Дата 31.8.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



Код

!( c ^ a[~i + 1])


какую функцию выполняют ^ и тильда перед i ? 
PM MAIL   Вверх
UnrealMan
Дата 31.8.2007, 10:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Кстати, могу подкинуть одну простенькую задачку. Есть код

Код
#include <iostream>

template <class T>
    void f(const T &t)
        { std::cout << "template" << std::endl; }

void f(...)
        { std::cout << "ellipsis" << std::endl; }
        
/* ... */

int main()
{
    f(x); // должно быть выведено: "ellipsis"
}

Что нужно вставить вместо /* ... */, чтобы вывелось "ellipsis"? Макросы и комментарии использовать запрещается. Вводить новую перегруженную функцию f тоже.

Это сообщение отредактировал(а) UnrealMan - 31.8.2007, 11:00
PM MAIL   Вверх
FiMa1
Дата 31.8.2007, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Код
#include <iostream>
using namespace std;

template <class T> void f(const T &t)
{
    cout << "template" << endl;
}

void f(...)
{
    cout << "ellipsis" << endl;
}


void f(int x, ...)
{
    cout << "ellipsis" << endl;
}

int main()
{
    int x = 10;

    f(x); // должно быть выведено: "ellipsis"
}

PM   Вверх
UnrealMan
Дата 31.8.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Я немного усложнил требование: вводить новую перегруженную f нельзя.

Это сообщение отредактировал(а) UnrealMan - 31.8.2007, 11:02
PM MAIL   Вверх
FiMa1
Дата 31.8.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(UnrealMan @ 31.8.2007,  11:02)
Я немного усложнил требование: вводить новую перегруженную f нельзя.

А x обязательно в качестве аргумента передавать, его ведь можно и убрать f();  smile 
А, ну да, ведь нужно добавить некий кусочек, ну тогда как вариант...

Это сообщение отредактировал(а) FiMa1 - 31.8.2007, 11:06
PM   Вверх
UnrealMan
Дата 31.8.2007, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Обязательно. Иначе смысл задачи теряется.

Добавлено @ 11:08
Можно лишь заменять /* ... */ на какой-то код. Править существующий код или добавлять код куда-то ещё не допускается.

Это сообщение отредактировал(а) UnrealMan - 31.8.2007, 11:08
PM MAIL   Вверх
FiMa1
Дата 31.8.2007, 11:27 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Код
#include <iostream>
using namespace std;

template <class T> void f(const T &t)
{
    cout << "template" << endl;
}

void f(...)
{
    cout << "ellipsis" << endl;
}

void (&x)(...) = f;

int main()
{
    f(x); // должно быть выведено: "ellipsis"
}

PM   Вверх
UnrealMan
Дата 31.8.2007, 11:43 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Ссылка на функцию будет передана шаблонной функции, которая выведет "template" smile
PM MAIL   Вверх
FiMa1
Дата 31.8.2007, 11:45 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(UnrealMan @ 31.8.2007,  11:43)
Ссылка на функцию будет передана шаблонной функции, которая выведет "template" smile

Компилировал?
PM   Вверх
bsa
Дата 31.8.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(FiMa1 @ 31.8.2007,  11:45)
Цитата(UnrealMan @ 31.8.2007,  11:43)
Ссылка на функцию будет передана шаблонной функции, которая выведет "template" smile

Компилировал?

gcc 4.1.2 выдает "template"
PM   Вверх
FiMa1
Дата 31.8.2007, 12:04 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Код

#include <iostream>
using namespace std;

template <class T> void f(const T &t)
{
    cout << "template" << endl;
}

void f(...)
{
    cout << "ellipsis" << endl;
}

void x(){}

int main()
{
    f(x); // должно быть выведено: "ellipsis"
}

PM   Вверх
bsa
Дата 31.8.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



FiMa1 ты хоть проверяешь?

Вот еще вариант, но немного "читерский" smile
Код
#include <iostream>

template <class T>
    void f(const T &t)
        { std::cout << "template" << std::endl; }

void f(...)
        { std::cout << "ellipsis" << std::endl; }

#include <unistd.h>
struct s
{
       s() { f(0,0); ::close(1); }
} x;

int main()
{
    f(x); // должно быть выведено: "ellipsis"
}


Это сообщение отредактировал(а) bsa - 31.8.2007, 12:08
PM   Вверх
FiMa1
Дата 31.8.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(bsa @ 31.8.2007,  11:57)
Цитата(FiMa1 @ 31.8.2007,  11:45)
Цитата(UnrealMan @ 31.8.2007,  11:43)
Ссылка на функцию будет передана шаблонной функции, которая выведет "template" smile

Компилировал?

gcc 4.1.2 выдает "template"

 smile  У меня Visual Studio 2005 Professional Edition... Сам недоумеваю над результатом. У кого еще аналогичный компилятор, перепроверьте, плз.. Просто очень интересно, это что бага студии..
Код
#include <iostream>
using namespace std;

template <class T> void f(const T &t)
{
    cout << "template" << endl;
}

void f(...)
{
    cout << "ellipsis" << endl;
}

void (&x)(...) = f;
void (*x_)(...) = f;

int main()
{
    f(x);  // печатает "ellipsis"
    f(x_); // печатает "template" 
}


Это сообщение отредактировал(а) FiMa1 - 31.8.2007, 12:14
PM   Вверх
Страницы: (5) Все 1 2 [3] 4 5 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0972 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.