post lecture 2-2

This commit is contained in:
2022-03-16 14:53:27 -05:00
parent 5368ae466e
commit 1b8c7458a5
3 changed files with 51 additions and 6 deletions

View File

@@ -21,7 +21,7 @@ int main() {
for(int i = 0; i < length; i++){
cout << "before seg fault" << endl;
// Will use access operator instead
cout << row1.row_data[i] << " ";
//cout << row1.row_data[i] << " ";
}
cout << endl;

View File

@@ -25,3 +25,42 @@ Dog::Dog(const Dog& from){
this->name[i] = from.name[i];
}
}
Dog& Dog::operator=(const Dog& rhs){
if(&rhs != this){
// delete existing memory
if(namelength > 0){
delete[] this->name;
}
this->age = rhs.age;
this->namelength = rhs.namelength;
this->name = new char[namelength];
for(int i = 0; i < namelength; i++){
this->name[i] = rhs.name[i];
}
}
return *this;
}
char Dog::operator[](int index) const{
if(index >= namelength){
// Use with try/catch when called in main do exception e.what()
throw(out_of_range("index is larger than name length"));
}
return name[index];
}
char& Dog::operator[](int index){
if(index >= namelength){
// Use with try/catch when called in main do exception e.what()
throw(out_of_range("index is larger than name length"));
}
return name[index];
}
ostream& operator<<(ostream& os, const Dog& d){
for(int i = 0; i< d.namelength; i++) {
os << d[i];
}
return os;
}

View File

@@ -2,9 +2,15 @@ using namespace std;
class Dog {
public:
Dog(int age, int namelength, char * name);
~Dog();
int age;
int namelength;
char * name;
Dog(int age, int namelength, char * name);
Dog(const Dog& from);
~Dog();
Dog& operator=(const Dog& rhs);
char operator[](int index) const;
char& operator[](int index);
friend ostream& operator<<(ostream& os, const Dog& d);
private:
int age;
int namelength;
char * name;
};