Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/187: Рейтинг темы: голосов - 187, средняя оценка - 4.55
2 / 2 / 0
Регистрация: 04.03.2015
Сообщений: 76

Выберите все верные утверждения из списка

07.10.2015, 16:21. Показов 40653. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1.Если в коде C++ вы вызываете необъявленную функцию, то это ошибка этапа компиляции.
2.Если в коде C++ вы вызываете функцию, которая была объявлена, но не была определена, то это ошибка этапа компиляции.
3.Для программы "Hello, World!", состоящей всего из одного файла, не требуется линковка.
4.Даже для программы состоящей из одной пустой функции int main() { return 0; } все равно требуется линковка.
5.Если в коде C++ вы вызываете функцию, которая была объявлена, но не была определена, то это ошибка этапа линковки.
6.Если в коде C++ вы вызываете необъявленную функцию, то это не ошибка, при условии, что функция была где-то определена.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.10.2015, 16:21
Ответы с готовыми решениями:

Выберите все верные утверждения
1) Если в базовом классе виртуальная функция определена как private, то в производном классе её можно переопределить как public. 2) У...

Отметьте все верные утверждения
struct String { /* ... */ char & at(size_t idx) { return str; } char at(size_t idx) const { return str; } ...

Отметьте все верные утверждения относительно вызова функции foo
Есть три версии функции foo: void foo(char) { std::cout << "char" << std::endl; } void foo(signed char) { std::cout <<...

29
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
07.10.2015, 16:36
Лучший ответ Сообщение было отмечено lerka1996 как решение

Решение

Отметь эти галками:

Если в коде C++ вы вызывает не объявленную функцию, то это ошибка этапа компиляции.

Если в коде C++ вы вызываете функцию, которая была объявлена, но не была определена, то это ошибка этапа линковки.

Даже для программы состоящей из одной пустой функции int main() { return 0; } все равно требуется линковка.

Добавлено через 3 минуты
У меня тут засада:
1)Если в базовом классе виртуальная функция определена как private, то в производном классе её можно переопределить как public.

2)Производные классы не видят private-предков своего базового класса.

3)Производные классы не видят protected-предков своего (непосредственного) базового класса, если они унаследованы от базового класса с модификатором private.

4)Чистый виртуальный метод с определением — это не то же самое, что обычный виртуальный метод.

5)Производные классы не могут переопределять private-виртуальные методы базового класса, если они унаследованы от базового класса с модификатором private.

6)У интерфейсов нет таблиц виртуальных методов.

7)Если в базовом классе виртуальная функция определена как public, то в производном классе её можно переопределить как private.
Надо выбрать верные.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.10.2015, 16:47
ture, 2 и 3 из списка добавьте в список верных
2
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
07.10.2015, 17:06
Kerry_Jr, возможно есть еще правильные. пока не проходит тест
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.10.2015, 17:06
ture, 5) 7)
1
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
07.10.2015, 18:08
3)Производные классы не видят protected-предков своего (непосредственного) базового класса, если они унаследованы от базового класса с модификатором private.
Это не верно.

Добавлено через 7 минут
1)Если в базовом классе виртуальная функция определена как private, то в производном классе её можно переопределить как public.
Это не верно.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.10.2015, 18:12
ture, а вы проверяли?
Цитата Сообщение от ture Посмотреть сообщение
Это не верно.
видимо, я не понял, что такое protected-предок
0
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
07.10.2015, 18:19
Kerry_Jr, я так вообще давно голову ломаю. Казалось бы напиши, да проверь. Так я и сделал, где смог. В результате тест уже третий день как не сделан.

Вот это:
6)У интерфейсов нет таблиц виртуальных методов.
4)Чистый виртуальный метод с определением — это не то же самое, что обычный виртуальный метод.

вообще не понимаю.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.10.2015, 18:28
Цитата Сообщение от ture Посмотреть сообщение
У интерфейсов нет таблиц виртуальных методов.
Интерфейс в С++ - это класс с виртуальными методами - абстрактный класс, поэтому таблица есть. Хотя я уже и сам запутался в таких вроде несложных вопросах.
2
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
08.10.2015, 14:13
Эти ответы верные:
Чистый виртуальный метод с определением — это не то же самое, что обычный виртуальный метод.

Если в базовом классе виртуальная функция определена как public, то в производном классе её можно переопределить как private.

Если в базовом классе виртуальная функция определена как private, то в производном классе её можно переопределить как public.

Производные классы не видят private-предков своего базового класса.
В основном проверено (остальное перебором нашел). Ответы валидны.
2
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
08.10.2015, 15:12
Цитата Сообщение от ture Посмотреть сообщение
4)Чистый виртуальный метод с определением — это не то же самое, что обычный виртуальный метод.
Когда происходит вызов pure virtual функции без реализации, программу выкидывает на стандартную заглушку с ругательствами в адрес криворукого программиста. Так вот, эту заглушку можно переопределить. Тогда получается что и метод вроде бы pure virtual, а определение у него есть.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
using namespace std;
struct parent
{
    parent(){
        //вызов pure virtual метода
        method();
    }
    virtual void method()=0;
};
void parent::method(){cout<<"Какой идиот вызвал pure virtual метод из конструктора?"<<endl;}
 
struct child:parent
{
    void method(){}
};
 
int main()
{
    child test;
    return 0;
}
1
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
08.10.2015, 15:35
Цитата Сообщение от ture Посмотреть сообщение
Если в базовом классе виртуальная функция определена как private, то в производном классе её можно переопределить как public.

Производные классы не видят private-предков своего базового класса.
И вот тут-то либо я чего-то недопонимаю, либо я чего-то недопонимаю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
class Base
{
    private:
        virtual void func(){ std::cout << "Base" << std::endl;}
    
};
 
class Child : public Base
{
    public: 
        void func(){ std::cout << "Child" << std::endl; }
};
 
int main()
{
    // Здесь ошибка
    Base *child1 = new Child;
    child1->func(); // error: 'virtual void Base::func()' is private
    delete child1;
    
    // А здесь все нормально
    Child child2;
    child2.func(); // выводит "Child"
}
1
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
08.10.2015, 16:09
Цитата Сообщение от Renji Посмотреть сообщение
Тогда получается что и метод вроде бы pure virtual, а определение у него есть.
Если определение есть то он уже не pure а просто виртуальный. pure означает что метода нет,а есть только место в VMT для потомка.
Да кстати интересно какой это компилятор позволяет виртуальные методы вызывать из конструктора?
У меня BCC матом ругается по этому поводу.
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
И вот тут-то либо я чего-то недопонимаю, либо я чего-то недопонимаю.
Ну все правильно - private - доступ только из методов себя любимого, protected - из методов себя и своих любимых потомков. public - откуда угодно.

Во втором случае тип Child2 однозначо указан.
В первом - бабка надвое гадала, потому берут из VMT. А поскольку func в VMT есть только у Base то маемо те що маемо. child::func() - это абсолютно другой метод не имеющий никакого отношения к base::func() потому что base::func() - private, а соответственно не переопределяется, и доступа из потомка к нему тоже нет.
1
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
08.10.2015, 16:13
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
private, а соответственно не переопределяется, и доступа из потомка к нему тоже нет.
так вот и я о том же, но ведь это утверждение
Если в базовом классе виртуальная функция определена как private, то в производном классе её можно переопределить как public.
считается верным.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
08.10.2015, 16:31
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
считается верным.
Ну по большому счету не переопределить а определить с таким же именем. Это для невиртуальных. а для виртуальных надо попробовать. но то что внутри private внутри private и останется. erty
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
08.10.2015, 16:34
Fulcrum_013, вопрос решен
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
class Base
{
    private:
        virtual void func(){ std::cout << "Base" << std::endl;}
    public:
        void method()
        {
            func();
        }
    
};
 
class Child : public Base
{
    public: 
        void func(){ std::cout << "Child" << std::endl; }
};
 
int main()
{
    Child child2;
    child2.method(); // выводит "Child"
}
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
08.10.2015, 16:44
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Да кстати интересно какой это компилятор позволяет виртуальные методы вызывать из конструктора?
g++ 4.9.2. Варнинг кидает, а так компилирует.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
08.10.2015, 16:53
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Fulcrum_013, вопрос решен
То бишь получается виртуальный private в общем то не отличается от protected? Еще один ляп Бъерна в этом плане.
Такой же как к примеру
C++
1
2
3
4
5
6
7
8
9
class Cls{
private: 
    int a;
public:
  Cls& operator +=(Cls& r){
       a+=r.a;// и все ок хотя объект другой и по идее должен быть доступ только к public 
       return *this;
   }
};
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
08.10.2015, 17:01
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
и все ок хотя объект другой и по идее должен быть доступ только к public
Объект другой, а класс тот же. Так что все правильно. Криво тут другое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class parent
{
protected:
    int x;
};
 
class child:public parent
{
public:
    void method(parent*value){
        x=0;//работает - у child есть доступ к protected полям parent
        value->x=0;//не работает - у child нет доступа к protected полям parent
    }
};
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
08.10.2015, 17:51
Цитата Сообщение от Renji Посмотреть сообщение
Объект другой, а класс тот же. Так что все правильно. Криво тут другое:
В первом случае нарушение инкапсуляции. Во втором с инкапсуляцией все Ok.
Вообще все эти непонятки растут от того в исходе не было разграничения по чтению/записи (__property)

Добавлено через 9 минут
В криво тут то что в первом случае блокирование доступа работает на уровне классов, во втором на уровне объектов, а по уму - единообразно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2015, 17:51
Помогаю со студенческими работами здесь

Указать верные утверждения в тесте по основам c++
Не могу понять, где ошибаюсь в тесте, нужно отметить только верное: 1) Синтаксис программы на C++ проверяется на этапе компиляции. 2)...

Модули: какие утверждения верные?
-Причины возникновения модульного программирования: возрастающие объемы программ, их увеличивающаяся внутренняя сложность и коллективный...

Дисперсия и матожидание - выбрать верные утверждения
Добрый день! Есть такие утверждения, нужно выбрать правильные: 1. Для независимых случайных величин ξ и η дисперсия линейна, т. е....

Выбрать верные утверждения по теории вероятностей
Добрый день. Просьба помочь с решением. Нужно отметить верные утверждения. 1. Если события A и B независимы, то...

Выберите правильные утверждения из предложенных:
Выберите правильные утверждения из предложенных: 1)Плоскости x-2y + 5z-13 = 0 и -2x + 4y-10z + 1 = 0 параллельные 2)Плоскости x-2y +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru