С++ для начинающих Конструктор класса Передача параметров в конструктор базового класса

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

В программировании очень часто приходится передавать параметры в какие-то функции. Вот может возникнуть необходимость передать параметр в базовый конструктор из основной программы. У начинающих с реализацией такой задачи могут возникнуть неприятные проблемы и куча вопросов.
На самом деле выполнение такой задачи очень просто, просто нужен пример. Где бы я не смотрел, везде ощущение, что авторы хотят запутать читающих. В качестве обучающего примера я буду передавать только один параметр в конструктор единственного класса. Чем меньше кода тем проще для начинающих понять принцип (так думаю я)

Для того чтоб понять этот пример нужно знать

Код C++ Передача параметра в конструктор

В этом примере а внутри main и a внутри класса совершенно разные переменные. При выполнении функции main сначала выполняется код из функции main(), который очищает экран, предлагает ввести a и присваивает значение в a функции main. После идет обращение к объекту obj1 — С помощью строчки MyClass obj1=MyClass(a) в конструктор объекта obj1 передается параметр a. В конструкторе это значение как эстафету принимает переменная N

MyClass::MyClass(int N) Внутри конструктора есть своя переменная a Это переменная из класса MyClass. (Переменная a Класса к переменной a из функции main совершенно никакого отношения не имеет. Это разные переменные, названные одним именем)
Когда срабатывает конструктор, в переменную а из класса MyClass присваивается значение из N. Таким образом N Передал полученную эстафетную палочку далее и по назначению вовнутрь класса

Эстафета:
a функции —> N конструктора
N конструктора —> a из класса
(На финише a из класса=a из функции)

Не знаю как вышло описать, но очень надеюсь не запутал своими объяснениями

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

4 комментария: С++ для начинающих Конструктор класса Передача параметров в конструктор базового класса

  • Anonymous говорит:

    Отлично описал.

  • Некто говорит:

    Я конечно сам нифига не знаю С++, да и изучал вначале Си шарп. Но вот опять для меня ошибкой считается возврат значения тут

    ;
    В этот раз visual studio не проматерился, но мы же опять используем невозвращаемый тип. Там более нам нечего возвращать. Возврат нужен, когда мы изменяем переменную. И если возвращать, то нужно так же указать в какой тип возвращается.
    Если я не прав, то можешь написать, что я последнее чмо )

    Автор сайта отвечает:
    тут если указывать тип функции void, то функция все равно возвращает void (Пустоту, ничего). Это даже без нашего участия. и Это не ошибка.
    другое дело, что можно не писать этот return.

    Возврат нужен, когда мы изменяем переменную.
    ================================
    По хорошему так: "Функция main всегда имеет определенный тип и возвращать значение должна всегда, Остальные функции и методы, которым определен определенный тип данных, должны возвращать объект того типа данных, который определен для функции (метода). если же им определен тип void, то они ничего не возвращают и прописывать return совсем не обязательно"

  • Аноним говорит:

    Автор, не понятно для чего в коде строчка:

    Как по мне, проще было так сделать:

    Автор сайта отвечает:
    Отмеченная строчка — это прототип.
    большая ли разница между
    MyClass obj1(a);
    и
    MyClass obj1(int);
    если у a тип int
    =============
    +Я объявил переменную obj как глобальную, вы как локальную.

    И еще пишите внимательнее. Ваша строчка 5 не соответствует действительности.

  • Anfrei говорит:

    не понимаю, что за obj1 и где он строчкой выше?
    MyClass obj(int);
    //Обратите внимание, что строчкой выше, в объект obj1 передается параметр int, который мы собираемся передать в конструктор объекта obj1. Если надо передать в 2 объекта, то было бы MyClass obj1(int),obj2(int); и далее по аналогии. Количество параметров и Тип который я передал в объект, я взял из прототипа описанного в конструкторе.

    Автор сайта отвечает:
    Это опечатка.
    Правильно так. Сразу во время объявления прототипа объекта obj, в прототипе указано, что объект obj будет с одним параметром int для передачи такого параметра в конструктор (параметра типа int).

    Прототип использовать не обязательно. Чуть выше этого комментария-ответа есть код от Анонима без использования прототипа.

    спасибо

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Пришёл парень на собеседование. Дали ему тест на админа. Он его успешно прошёл и спросил: - А вы всем курьерам такие тесты даёте?

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок