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

Что означает двоеточие в наследовании конструктора? - C++

Восстановить пароль Регистрация
 
iwsyhgia
1 / 1 / 0
Регистрация: 11.01.2014
Сообщений: 51
03.08.2014, 23:58     Что означает двоеточие в наследовании конструктора? #1
При изучении ООП в рамках языка c++ столкнулся с интересной формой обьявления конструктора объекта:
C++
1
classname(int A, int B, int C) : a(A), b(B), c(C) { }
С инициализации полей класса более менее понятно(соответствует int a(A) и т.д). Но откуда взялось двоеточие?
Вопрос в следующем. Используется где еще либо в языке приведенная выше(или похожая) синтаксическая констуркция?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
04.08.2014, 00:00     Что означает двоеточие в наследовании конструктора? #2
При наследовании указываешь какой класс наследовать
C++
1
2
3
4
5
6
7
8
9
10
Class A
{
.....
public:
....
}
Class B : public A
{
....
}
Andrej
И целого heap'а мало
 Аватар для Andrej
93 / 54 / 9
Регистрация: 31.07.2014
Сообщений: 293
04.08.2014, 00:35     Что означает двоеточие в наследовании конструктора? #3
imho удивительно его не увидеть.
Применяется постоянно. Инициализирует не только базовые типы, но и библиотечные или пользовательские.
К примеру
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
#include <string>
#include <iostream>
#include <utility>
 
class DummyClass {
public:
        DummyClass(std::string name, std::pair<int, char> value)
                : name {name}, value {value} {};
        std::pair<int, char>& getValue() { return this->value; };
        std::string& getName() { return this->name; };
private:
        std::string name;
        std::pair<int, char> value;
};
 
int
main()
{
        DummyClass dummy {"vasya", {23, 'c'}};
        std::cout << dummy.getValue().first << " "
                  << dummy.getValue().second << " "
                  << dummy.getName()
                  << std::endl;
};
krv
71 / 51 / 11
Регистрация: 10.07.2014
Сообщений: 328
04.08.2014, 11:16     Что означает двоеточие в наследовании конструктора? #4
C++
1
classname(int A, int B, int C) : a(A), b(B), c(C) { }
и
C++
1
2
3
4
classname(int A, int B, int C) 
{ 
  a=A;b=B;c=C;
}
А второе по моему нагляднее. И смысл делать одно и то же разными способами. Чтобы запутаться?
Jewbacabra
1787 / 1502 / 538
Регистрация: 24.04.2014
Сообщений: 4,215
04.08.2014, 11:21     Что означает двоеточие в наследовании конструктора? #5
Цитата Сообщение от krv Посмотреть сообщение
И смысл делать одно и то же разными способами.
А это не одно и тоже. Например константу инициализировать 2 способом не получится
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
04.08.2014, 11:22     Что означает двоеточие в наследовании конструктора? #6
krv, в общем случае во втором примере кода сначала для всех объектов будет вызван конструктор по умолчанию, затем оператор присваивания. С примитивными типами разница может быть незаметна.
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
04.08.2014, 11:32     Что означает двоеточие в наследовании конструктора? #7
Цитата Сообщение от krv Посмотреть сообщение
И смысл делать одно и то же разными способами.
Это не одно и то же.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.08.2014, 12:25     Что означает двоеточие в наследовании конструктора? #8
krv, А кто тебе такой бред сказал, что это одно и то же?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2014, 12:52     Что означает двоеточие в наследовании конструктора?
Еще ссылки по теме:

Поясните пожалуйста что означает двоеточие и то что идет после него C++
C++ Что такое #, include, что это означает
Что за ошибка при вызове конструктора? C++

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

Или воспользуйтесь поиском по форуму:
recoder
 Аватар для recoder
129 / 129 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
04.08.2014, 12:52     Что означает двоеточие в наследовании конструктора? #9
list initialization
Yandex
Объявления
04.08.2014, 12:52     Что означает двоеточие в наследовании конструктора?
Ответ Создать тему
Опции темы

Текущее время: 07:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru