Недавно начал учить ООП на с++ и сразу же появился вопрос. Почему когда в 38 строке я записываю в переменную b значения таким образом, то ни конструктор, ни перегруженный оператор "=" не вызываются. Объясните пошагово, пожалуйста, как работает код в строке 38. Буду благодарен :) Вот код:
#include <iostream>
using namespace std;
class Point{
private:
int x;
int y;
public:
Point(){
cout << "constructor1\t"<< this<<endl;
x = NULL;
y = NULL;
};
Point(int x, int y)
{
this->x = x;
this->y = y;
cout << "constructor2\t"<< this <<endl;
};
~Point()
{
cout << "destructor\t" << this << endl;
};
void Print()
{
cout <<"x = " <<x <<"\ty = " << y<<";\t"<<this<< endl;
}
Point& operator =(const Point& other)
{
x = other.x;
y = other.y;
cout << "operator = "<< this << endl;
return *this;
}
};
int main()
{
Point a(1, 2);
Point b = a;
a.Print();
b.Print();
}
Потому что вызывается конструктор копирования, которого у вас нет, так что он генерируется автоматически компилятором. Добавьте в свой код копирующий конструктор
Point(const Point& p): x(p.x), y(p.y)
{
cout << "copy constructor\t"<< this <<endl;
}
и попробуйте еще раз...
P.S. не для вас, а для тех, кто может начать уточнять :) - остальные огрехи типа присваивания NULL, присваивания, а не инициализации я трогать не стал - в данном случае они несущественны.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем добрый вечер! Столкнулся с потребностью сверхскростного обращения матриц без использования nplinalg
У меня есть C++/Qt библиотека, которую я написал самЯ понимаю, что для ее распространения, cmake должен устанавливать
Написал простейший алгоритм на с++, который находит сумму элементов массива, которые не равны максимальному, повторяющие максимальные элементы...
Есть TableView заполняющаяся через QSqlQueryModelВ первой колонке boolean данные, ориентируясь на значение ячейки необходимо отрисовать в ней ту или иную...