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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
madonzy
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 65
#1

Разница в использовании конструкторов - C++

27.03.2014, 16:18. Просмотров 541. Ответов 20
Метки нет (Все метки)

Привет всем)
У меня вопрос. Относительно недавно начал изучать ООП на С++ и для меня непонятна разница между такими конструкторами:

№1
C++
1
2
Point::Point(int _x, int _y)
: x(_x), y(_y) {}
№2
C++
1
2
3
4
Point::Point(int _x, int _y) {
x = _x;
y = _y;
}
№3
C++
1
2
3
4
Point::Point(int _x, int _y) {
SetX(_x);
SetY(_y);
}
Свойства, класса Point, x и y приватные. Так в чём же разница?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 16:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разница в использовании конструкторов (C++):

Разница в определении конструкторов со списком инициализации и без него - C++
Начинаю изучать конструкторы , и в моей книге его объявление выглядит следующим образом class Counter { private : unsigned int...

Нереальная разница при использовании int и double - C++
Писал код в параллельную ветку, случайно наткнулся на такое, вот код: #include<iostream> #include<cmath> int main(){ const int...

Конфликт конструкторов. - C++
Здравствуйте! struct DateTime : tm { DateTime(int year_ = 1970, int month_ = 1, int day_ = 1,...

Виды конструкторов - C++
Какие конструкторы существуют в С++? Инфу с вики читал, но почему то все равно ответ не верен. Варианты ответа: 1) Копирования ...

Наследование конструкторов - C++
Добрый день. Подскажите как правильно осуществить наследование конструктора в двух файлах h и cpp. В одном h файле все работало. ...

Массив из конструкторов - C++
Подскажите как создать массив из конструкторов определенного класса. Приведу пример: static int num1 = 0; ... ...

20
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.03.2014, 10:45 #16
Цитата Сообщение от SatanaXIII Посмотреть сообщение
C++
1
2
3
4
Point( int x_, int y_ ):
  x( SetX( int x_ ) ),
  y( SetY( int y_ ) )
  {}



Вариант №13
Особенно учитывая, что Set() скорее всего возвращает void. Да и инты надо бы убрать при вызове. Короче, баг на баге. Исправляйтесь
1
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
28.03.2014, 11:28 #17
Цитата Сообщение от Tulosba Посмотреть сообщение
Особенно учитывая, что Set() скорее всего возвращает void. Да и инты надо бы убрать при вызове. Короче, баг на баге. Исправляйтесь
Всё в этой жизни относительно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define SetX(...) new int [x_]
#define SetY(...) new int [y_]
 
struct Point {
    Point( int x_, int y_ ):
        x( SetX( int x_ ) ),
        y( SetY( int y_ ) )
    {
    }
    ~Point(){
       delete [] x ;
       delete [] y ;
    }
    int * x ;
    int * y ;
} ;
2
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.03.2014, 11:52 #18
Croessmah, макросы вообще превращают плюсы в другой язык.
0
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,551
Завершенные тесты: 1
28.03.2014, 12:21 #19
Да, да, да. Давайте холивар на ровном месте разведем.

0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
28.03.2014, 13:05 #20
SatanaXIII, никакого холивара. Я думаю, Croessmah будет со мной согласен
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
28.03.2014, 13:16 #21
Цитата Сообщение от Croessmah Посмотреть сообщение
а если переменные должны устанавливаться особым образом в зависимости от параметра?
Тут много если. Например:
А если они вообще могут не понадобиться, а инициализаторы ресурсоёмки (считая, что время тоже ресурс), то и вообще можно не инициализировать.
<<Инициализация инициализающих, - дело рук самих инициализающих.>>
Цитата Сообщение от Tulosba Посмотреть сообщение
Я думаю, Croessmah будет со мной согласен
Будет. Или не будет. Это точно.
0
28.03.2014, 13:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2014, 13:16
Привет! Вот еще темы с ответами:

Наследование конструкторов - C++
Создать класс CPoint – точка. На его основе создать классы CColoredPoint и CLine. На основе класса СLine создать класс CcoloredLine и класс...

Вызов конструкторов - C++
привет почему здесь вызывается только 1 конструктор? #include &lt;iostream&gt; using namespace std; class A {

Перегрузка конструкторов - C++
Добрый день знатоки С++ возник вопрос Код этой программы компилируется в CodeBlocks а на VirtualBox не компилируется , объясните...

запуск конструкторов - C++
class String { private: strCount* psc; public: String() //...


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

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

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