我不知道,這是不正確的,複製構造函數或操作符=。我測試了兩個「墳墓」,並且打印機正在工作,但在程序結束時,編譯器說「調試斷言失敗」。如何在Vector類中創建operator =?
#pragma once
#include <cstdio>
#include <cmath>
#include <iostream>
#include <cstdlib>
class tomb {
private:
double *adat;
int szam;
public:
tomb(){
adat = NULL;
szam = 0;
}
tomb(const tomb &u) {
adat = u.adat;
szam = u.szam;
};
int meret()const {
return szam;
}
~tomb() {
delete[] adat;
}
double & operator[](int n) {
return adat[n];
}
const double & operator[](int n)const {
return adat[n];
}
const tomb &operator=(const tomb &a) {
adat = a.adat;
szam = a.szam;
return *this;
}
tomb elso_valahany(int n) {
}
void push_back(const double &a) {
double *tmp;
tmp = new double[szam+1];
for (int i = 0; i < szam; i++)
{
tmp[i] = adat[i];
}
tmp[szam] = a;
delete[] adat;
adat = tmp;
++szam;
}
void Kiir()const {
for (int i = 0; i < szam; i++)
{
std::cout << adat[i] << "\n";
}
}
};
他們倆都是錯的。 –
你爲什麼使用動態分配? –
當兩個析構函數試圖「刪除[]」它們時,從另一個'tomb'複製指針肯定是錯誤的。這是一個明顯的雙刪除同一個指針。 –