Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
#1

В чём разница? - C++

01.01.2014, 13:19. Просмотров 301. Ответов 2
Метки нет (Все метки)

Здрасьте.
Здесь представлены два способа присвоения переменной A значения 10.
Через конструктор:

C++
1
2
3
4
5
6
7
8
9
10
11
12
class random
{
  public:
  random(int a){A=a;}
  ~random(){}
  private:
  int A;
};
int main()
{
random first(10);
}

И через метод доступа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class random
{
  public:
  void Setrandom(int a){A=a;}
  private:
  int A;
};
int main()
{
random first;
first.Setrandom(10);
}
Вопрос в том,зачем нужен конструктор,если работать с закрытыми переменными можно и через методы доступа?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2014, 13:19     В чём разница?
Посмотрите здесь:

C++ (char)xx и '\xx' - в чём разница?
В чём разница между процедурами и функциями ? C++
В чём разница между заголовками <c***> и <***.h>? C++
C++ В чём разница между динамической и статической линковкой библиотеки?
C++ C++ и C. В чём разница?
Не объясните в чём разница между случаями C++
C++ Объясните, в чём разница
Односвязный список: В чём разница между struct и class? C++
В чём разница между состояниями потока failbit и badbit? C++
Передача аргумента в функцию по значению, по ссылке, по указателю: в чём концептуальная разница? C++
C++ В чём разница между string и символьными массивами?
В чём разница в конструкрукторе со списком инициализации и без оного C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12887 / 7273 / 810
Регистрация: 27.09.2012
Сообщений: 17,972
Записей в блоге: 2
Завершенные тесты: 1
01.01.2014, 13:23     В чём разница? #2
Цитата Сообщение от Игорюня Посмотреть сообщение
Вопрос в том,зачем нужен конструктор,если работать с закрытыми переменными можно и через методы доступа?
А Вы уверены, что всегда будете помнить о том, что после
C++
1
random first;
нужно будет обязательно вызвать все необходимые функции-члены класса?
А уверены ли Вы в том, что те, кто будет пользоваться вашим классом будут заботиться о вызове всех инициализирующих функций?
А если у Вас в классе 100 переменных, для всех делать функции доступа? А если некоторые из переменных должны быть вовсе не доступны пользователю класса?
А константы так Вы инициализируете?
А ссылки вручную считать?
Тогда получается почти Си
MrGluck
Ворчун
Эксперт CЭксперт С++
6675 / 3856 / 510
Регистрация: 29.11.2010
Сообщений: 10,215
02.01.2014, 03:20     В чём разница? #3
Лучше всего - третий способ, используя список инициализации конструктора
C++
1
random(int a) : A(a){}
Добавлено через 1 минуту
Так объекты будут созданы с уже заданными значениями, а не сначала созданы, потом проинициализированы. (Сейчас не берем во внимание отладчик в конкретном примере, думаем о не POD типах).
Yandex
Объявления
02.01.2014, 03:20     В чём разница?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru