Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Stason676
Заблокирован
#1

Что значит "class PairDouble"? - C++

27.01.2014, 07:38. Просмотров 359. Ответов 10
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
class PairDouble
{
public:
    PairDouble(double x1, double y1) : x(x1), y(y1) { }
    void ShowQ();
private:
    double x, y;
};
Здравствуйте, не могли бы подсказать что значит вот эта строка в коде "PairDouble(double x1, double y1) : x(x1), y(y1) { }", а конкретно вместо вызова базового конструктора вот эта непонятная запись "x(x1), y(y1) { }".
Спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 07:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что значит "class PairDouble"? (C++):

Что значит "%d %d\n" в функции вывода в файл fprintf(f, "%d %d\n", i, j); - C++
Что значит "%d %d\n" в функции вывода в файл fprintf(f, "%d %d\n", i, j); Запутался, объясните, пожалуйста!

Аргументы функции: что значит "большие" и "небольшие" аргументы? - C++
Здравствуйте! Всем доброго дня! Растолкуйте пожалуйста! Что значит большие и небольшие?

Что значит "знать" какой-либо язык программирования? - C++
Что значит 'знать' какой-либо язык программирования?

что значит "поставить контроль памяти"? (в динамическом массиве) - C++
подскажите, пожалуйста. программа работает, но не совсем понял чего требует.

Что значит "Косвенная адресация к элементам массива" - C++
Всем доброго времени суток!!! Кто может подсказать, что значит "Косвенная адресация" к элементам массива. *(B + i) = 0; Это то?...

Что значит запись char massiv[] = "text" ? - C++
Почему не указан размер массива и присваивается строка?

10
0x10
2528 / 1708 / 258
Регистрация: 24.11.2012
Сообщений: 4,276
27.01.2014, 07:55 #2
Конструктор со списком инициализации. Инициализирует поля класса x и y значениями x1 и y1 соответственно.
1
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.01.2014, 08:20 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Stason676, когда доберетесь до наследования, увидите как такая же конструкция будет использоваться для вызова конструктора базового класса, если придется передавать параметры.
И еще, если в вашем примере поля x,y будут константами, то другого способа их проинициализировать нет. Т.е. нельзя в теле конструктора написать: x = x1;
1
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
27.01.2014, 09:05 #4
Кстати я такую конструкцию видел и пытался написать,но компилятор её не принимал,поэтому пишу всё в фигурных скобках.
0
0x10
2528 / 1708 / 258
Регистрация: 24.11.2012
Сообщений: 4,276
27.01.2014, 09:07 #5
Игорюня, если есть вопрос, задавайте с примером кода. А так - ну не получилось, криво записали. Можем дружно посочувствовать.
1
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
27.01.2014, 09:10 #6
Цитата Сообщение от 0x10 Посмотреть сообщение
Игорюня, если есть вопрос, задавайте с примером кода. А так - ну не получилось, криво записали. Можем дружно посочувствовать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
class random
{
public:
    void Set(int b):a(b){}
 
private:
    int a
 
};
 
 
 
int main()
{   
    random object;
    object.Set(10);
    system("pause");
 
}
Компилятору не нравится void Set(int b):a(b){}
0
Croessmah
Пришел
Эксперт CЭксперт С++
13771 / 7852 / 894
Регистрация: 27.09.2012
Сообщений: 19,267
Записей в блоге: 3
Завершенные тесты: 1
27.01.2014, 09:11 #7
Цитата Сообщение от Игорюня Посмотреть сообщение
void Set(int b):a(b){}
это не конструктор
1
0x10
2528 / 1708 / 258
Регистрация: 24.11.2012
Сообщений: 4,276
27.01.2014, 09:11 #8
Игорюня, синтаксис списка инициализации существует для конструктора. А тут обычный метод.
1
Stason676
Заблокирован
27.01.2014, 14:01  [ТС] #9
Цитата Сообщение от 0x10 Посмотреть сообщение
Конструктор со списком инициализации. Инициализирует поля класса x и y значениями x1 и y1 соответственно.
А для чего это нужно? В теле конструктора нельзя это сделать?
0
0x10
2528 / 1708 / 258
Регистрация: 24.11.2012
Сообщений: 4,276
27.01.2014, 14:04 #10
Stason676, в 3 посте уже было сказано про константные поля.
Плюс, если вы присваиваете значения в теле конструктора, то по факту выполняется два действия: сначала инициализация, а потом присваивание.
1
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.01.2014, 14:17 #11
Цитата Сообщение от 0x10 Посмотреть сообщение
сначала инициализация, а потом присваивание.
инициализации может и не быть, если имеем дело с примитивными типами.
0
27.01.2014, 14:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 14:17
Привет! Вот еще темы с ответами:

Что значит ":" и как оно работает - C++
Здравствуйте, в данном коде имеется Unit(): health(10) { } и вопрос в том , а что же делает &quot;:&quot; и как им пользоваться. Исользовал раньше...

Что значит ошибка "exponent has no digits"? - C++
Что значит ошибка exponent has no digits?

Выводит значение "f". Что это значит? - C++
вместо результата выводит &quot;f&quot;, незнаю даже как бороться. подскажите в чем причина #include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main () ...

Что значит "в поле шириной 10 символов"? - C++
Объясните пожалуйста, что значит в поле с шириной в 10 символов? И почему у меня показывает число с 3 знаками после запятой? Полностью...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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