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

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

Войти
Регистрация
Восстановить пароль
 
Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
#1

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

23.08.2014, 01:15. Просмотров 473. Ответов 3
Метки нет (Все метки)

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++):

Сравнение класса наследника через конструктор с одним аргументом - C++
#include &lt;iostream&gt; using namespace std; //////////////////////////////// class Counter { protected: unsigned int count; ...

Вызвать конструктор с одним аргументом - C++
Есть класс с конструктором принимающим один аргумент типа T. Этим аргументом должно быть значение T по умолчанию, то есть T(). Однако,...

Инициализация массива объектов через конструктор - C++
class some { public: some(){} some(int b):a(b){} void Set(int b){a=b;} private: int a; };

Инициализация объектов через конструктор(объясните в чём ошибка) - C++
Вот программа! #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class GradeBook { public: GradeBook(); ...

Сравнение 2 объектов, через адрес таблицы виртуальных методов - C++
Есть функция принимающая на вход 2 указателя на объекты (класс скорее всего является интерфейсом, ну у него есть виртуальные функции). Так...

Компилятор требует конструктор, принимающий аргументом экземпляр того же класса (не ссылку) - C++
Доброго времени суток. Проблема такова: имеется ряд нижеприведённых классов (для простоты всё, что навскидку не касается данной...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7102 / 4243 / 952
Регистрация: 30.01.2014
Сообщений: 7,025
23.08.2014, 01:16 #2
Цитата Сообщение от Spirit370 Посмотреть сообщение
В этой программе сравнивается
Разве это сравнение? Это присваивание.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
23.08.2014, 01:25 #3
Spirit370, для инициализации unsigned int передавать надо бы не int а unsigned int. Передайте -1 и посмотрите что получится.
Цитата Сообщение от Spirit370 Посмотреть сообщение
Значит при сравнении с2 подставляется в аргумент конструктора
Это присваивание. Сравнение это когда результат булев, а операция не присванивания, а отношения : ==, !=, <, >, <=, >=. При присваивании в вашем примере, конструктор копирования предоставленный по умолчанию копирует по-байтово один объект в другой.
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
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& ) {}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2014, 01:30
Привет! Вот еще темы с ответами:

Конструктор с одним параметром и с переменным числом параметров - C++
пишу обычный класс, обычная лаба, где несколько конструкторов.применять одновременно в условии не сказано, но я решил помучатся и узнать...

Конструктор копировщик объектов, содержащих массивы - C++
Конструктор копировщик который будет создавать объекты в которых есть массивы. Можно просто фрагмент кода.

Вызов метода с одним именем у объектов разных типов - C++
Здравствуйте. Подскажите как решить задачу. Есть 3 класса: A, B, C которые не связаны друг с другом и не наследуют от общего класса. В...

Сравнение объектов - C++
if ((a/b) &gt; (f.a/f.b)) { cout &lt;&lt; &quot;1 &gt; 2&quot; &lt;&lt; endl; return *this; объекты класса a и b имеют тип int, как в этом отрывке метода...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.08.2014, 01:30
Ответ Создать тему
Опции темы

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