Заранее спасибо за помощь. Поставлю любое кол-во плюсов
С++: время жизни и области видимости переменных (помогите разобраться)
Модератор: Модераторы разделов
-
boot
- Сообщения: 289
С++: время жизни и области видимости переменных
Все наверное знают intuit.ru . Не получается у меня там пройти одну тему по сабжу(наверное, не только у меня). С одной стороны, тема в принципе не сложная, а сдать не получается. Думаю, может какая-нибудь ошибка проверки вариантов ответов... Просьба к разбирающимся в данной теме: я тут прикреплю текстовик с несколькими последними вариантами ответов, а вы скажете сколько там у меня ошибок. Буду действовать по ситуации, в зависимости от вашего диагноза
Заранее спасибо за помощь. Поставлю любое кол-во плюсов
Заранее спасибо за помощь. Поставлю любое кол-во плюсов
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: С++: время жизни и области видимости переменных
namespace a {
int a;
class A {
public: static int a;
};
}
Какое будет значение атрибута a класса a после выполнения в функции main a::a = 4; ?
#4
0
не определено
afaik, в обоих случаях мы получим ошибку компиляции, потому как a::A::a объявлена, но нигде не определена. так что ой. к сожалению, проверить сейчас не могу.namespace a {
int a;
enum AA { aa = 0; bb, cc };
class A {
public: static int a;
static void init() { a = 4; }
}
}
Какой будет результат выполнения в функции main после того, как будет выполнен метод init cout << a::a; ?
0
4
#не определено
слава роботам!
-
boot
- Сообщения: 289
Re: С++: время жизни и области видимости переменных
2elide:
Да, это ошибка. В первом печатает 4 как значение переменной int a в пространстве имен a, не атрибута класса(только при a::a=4;). Класса A нет, поэтому наверное это неккоректно поставленный вопрос.
Во втором явная ошибка : error: `init' is not a member of `a'. К тому же еще синтаксическая ошибка: AA { aa = 0; bb, cc }; вместо enum AA { aa = 0, bb, cc };
Получается, все остальные ответы правильные? Я так и думал, что это пройти невозможно из-за скорее всего ошибки сервера - получается как ни отвечай, всё неправильно.
Единственный вопрос, который ещё можно трактовать двояко это:
если считать не синтаксис обьявления, то можно посчитать ошибкой второй вариант, т.к. никакой f() в станартной библиотеке нет.
Спасибо большое за помощь!
Да, это ошибка. В первом печатает 4 как значение переменной int a в пространстве имен a, не атрибута класса(только при a::a=4;). Класса A нет, поэтому наверное это неккоректно поставленный вопрос.
Во втором явная ошибка : error: `init' is not a member of `a'. К тому же еще синтаксическая ошибка: AA { aa = 0; bb, cc }; вместо enum AA { aa = 0, bb, cc };
Получается, все остальные ответы правильные? Я так и думал, что это пройти невозможно из-за скорее всего ошибки сервера - получается как ни отвечай, всё неправильно.
Единственный вопрос, который ещё можно трактовать двояко это:
Код: Выделить всё
Объявление extern void f(int); означает:
# функция определена в другом исходном файле
функция определена в другом исходном файле, или стандартной библиотеке
функция может быть вызвана в любом другом исходном файле
функция может быть вызвана только в другом исходном файле
нет правильного ответаесли считать не синтаксис обьявления, то можно посчитать ошибкой второй вариант, т.к. никакой f() в станартной библиотеке нет.
Спасибо большое за помощь!