I'm just trying to create a simple program to practice some C++, but I'm unsure as to why I'm getting this current error. The output provides my desired outcome, but after succesful output I keep getting debug assertion errors. Is it a memory leak or something? I have no idea what it could be.
Header:
#include <iostream>
class Record {
char* rec;
public:
Record();
Record(const char*);
Record(const Record&);
~Record();
void display(std::ostream&);
Record& operator=(const char*);
};
std::ostream& operator<<(std::ostream& os, Record& r);
cpp:
#define _CRT_SECURE_NO_WARNINGS
#include "Record.h"
Record::Record() {
rec = nullptr;
}
Record::Record(const char* s) {
if(s != nullptr) {
rec = new char[strlen(s) + 1];
strcpy(rec, s);
} else {
*this = Record();
}
}
Record::Record(const Record& r) {
*this = r;
}
Record::~Record() {
delete [] rec;
}
void Record::display(std::ostream& os) {
os << rec;
}
Record& Record::operator=(const char* s) {
if (rec != s)
delete [] rec;
if(s != nullptr) {
rec = new char[strlen(s) + 1];
strcpy(rec, s);
}
else {
rec = nullptr;
}
return *this;
}
std::ostream& operator<<(std::ostream& os, Record& r) {
r.display(os);
return os;
}
Main:
#include <iostream>
#include "Record.h"
using namespace std;
int main() {
Record rec1("inheritance"), rec2 = rec1;
cout << rec1 << endl;
cout << rec2 << endl;
rec1 = "overloading";
cout << rec1 << endl;
rec2 = rec1;
cout << rec2 << endl;
return 0;
}