week10 lecture 2
This commit is contained in:
@@ -6,6 +6,7 @@ class Row{
|
|||||||
int size = 0;
|
int size = 0;
|
||||||
double * data;
|
double * data;
|
||||||
|
|
||||||
|
// constructor
|
||||||
Row(int size){
|
Row(int size){
|
||||||
cout << "constructor" << endl;
|
cout << "constructor" << endl;
|
||||||
this->size = size;
|
this->size = size;
|
||||||
@@ -22,6 +23,14 @@ class Row{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// move copy constructor
|
||||||
|
Row(Row&& from){
|
||||||
|
cout << "move copy constructor" << endl;
|
||||||
|
this->size = from.size;
|
||||||
|
this->data = from.data;
|
||||||
|
from.data = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
// assignment operator (non-move)
|
// assignment operator (non-move)
|
||||||
Row operator=(const Row& rhs){
|
Row operator=(const Row& rhs){
|
||||||
if(this != &rhs){
|
if(this != &rhs){
|
||||||
@@ -35,15 +44,35 @@ class Row{
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Row& operator=(Row&& from){
|
||||||
|
cout << "assignment operator" << endl;
|
||||||
|
if(this != &from){
|
||||||
|
delete[] data;
|
||||||
|
//this-size = from.size; // gives error
|
||||||
|
this->data = from.data;
|
||||||
|
from.data = nullptr;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
~Row(){
|
~Row(){
|
||||||
delete[] data;
|
delete[] data;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void swap(Row& R1, Row& R2){
|
||||||
|
Row temp = move(R1);
|
||||||
|
R1 = std::move(R2);
|
||||||
|
R2 = std::move(temp);
|
||||||
|
}
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
|
|
||||||
Row R1(2);
|
Row R1(2);
|
||||||
Row R2(R1);
|
Row R2(3);
|
||||||
|
swap(R1,R2);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user