Я сделал приложение в C++, где пользователь записывает некоторые случайные числа (которые помещаются в массив) и отображаются ему, а с помощью конструктора копирования снова отображается его возраст ввода , Но проблема здесь в том, что функция копирования выполняется, но она не отображает никакой информации. Вот мой код:C++ Copy constructor runtime-error
#include <iostream>
#include <string>
using namespace std;
class Identity{
protected:
int* arry_int;
int ages;
Identity(){} //private default constructor
public:
Identity(int repeated_number){ //overloaded constructor
ages = repeated_number ;
arry_int = new int [ages];
}
void getAge(){ //getting age form the user
for (int i = 0; i < ages; i++){
cout << "Enter age[" << i << "]: ";
cin >> arry_int[i];
}
}
void printAge(){
cout << "Friend's ages" << endl;
cout << "-----------------" << endl;
for (int i = 0; i < ages; i++){
cout << arry_int[i] << endl;
}
}
//move copy constructor
Identity(Identity&& cpy){
cout << "Declaring move constructor" << endl;
arry_int = cpy.arry_int;
cpy.arry_int = NULL;
}
//move assignment operator
Identity& operator=(Identity&& cpy){
cout << "Declaring move assignment operator" << endl;
if (this != &cpy){
delete arry_int;
arry_int = cpy.arry_int;
cpy.arry_int = NULL;
}
return *this;
}
~Identity(){
delete arry_int;
}
};
int main(){
string nemesis;
Identity iden(5);
iden.getAge();
iden.printAge();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout << "Enter your nemesis name: " << endl;
getline(cin,nemesis);
//nemesis stealing your identit
Identity stolen(move(iden));
cout << "Now " << nemesis << " stole your friend's age and used it against you" << endl;
stolen.printAge();
system("pause");
return 0;
}
Конструкторы копирования и конструкторы перемещения различны. Не смешивайте условия; это просто путает всех остальных. – Brian