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

Сравнение двух объектов через конструктор с одним аргументом - C++

Восстановить пароль Регистрация
 
Spirit370
 Аватар для Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
23.08.2014, 01:15     Сравнение двух объектов через конструктор с одним аргументом #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Int
{
private:
    unsigned int integer;
public:
    inline int get_int()const
    {return integer;}
    Int () : integer (0){}
    Int ( int c ) : integer(c){}
};
void main()
{
    Int c2(5),c1;
    c1 = c2;
    cout << c1.get_int() << endl;
    system("PAUSE");
}
Я просто хочу понять.

В этой программе сравнивается
C++
1
c1 = c2;
Значит при сравнении с2 подставляется в аргумент конструктора
C++
1
Int ( int c ) : integer(c){}
А теперь вопрос, как объект подставляется в аргумент int.
2)Из объектов вытягивается значение integer и сравнивается?
Или как-то ещё это делается?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2014, 01:15     Сравнение двух объектов через конструктор с одним аргументом
Посмотрите здесь:

Сравнение объектов класса C++
Сравнение объектов template C++
C++ конструктор с одним и переменным числом параметров
Сравнение объектов C++
C++ Инициализация массива объектов через конструктор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
23.08.2014, 01:16     Сравнение двух объектов через конструктор с одним аргументом #2
Цитата Сообщение от Spirit370 Посмотреть сообщение
В этой программе сравнивается
Разве это сравнение? Это присваивание.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
23.08.2014, 01:25     Сравнение двух объектов через конструктор с одним аргументом #3
Spirit370, для инициализации unsigned int передавать надо бы не int а unsigned int. Передайте -1 и посмотрите что получится.
Цитата Сообщение от Spirit370 Посмотреть сообщение
Значит при сравнении с2 подставляется в аргумент конструктора
Это присваивание. Сравнение это когда результат булев, а операция не присванивания, а отношения : ==, !=, <, >, <=, >=. При присваивании в вашем примере, конструктор копирования предоставленный по умолчанию копирует по-байтово один объект в другой.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
23.08.2014, 01:30     Сравнение двух объектов через конструктор с одним аргументом #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Spirit370 Посмотреть сообщение
Значит при сравнении с2 подставляется в аргумент конструктора
Для перегрузки такого присваивания (не сравнения) используйте void Int::operator=( const Int& ). В теле делаете что хотите, хоть левое значение задавайте. Для конструктора так же можно: Int(const Int& s)
Если не перегрузить, то:
Цитата Сообщение от IGPIGP Посмотреть сообщение
При присваивании в вашем примере, конструктор копирования предоставленный по умолчанию копирует по-байтово один объект в другой.
Если нужно избежать возможного случайного копирования объектов (к примеру если у всех есть свой уникальный ID), то можно запретить такие действия, объявив в приват секции
C++
1
2
3
private:
Int(const Int& s) {}
void Int::operator=( const Int& ) {}
Yandex
Объявления
23.08.2014, 01:30     Сравнение двух объектов через конструктор с одним аргументом
Ответ Создать тему
Опции темы

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