我已經寫了一個類來習慣C++。當我嘗試刪除對象時,調試器用_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)拋出「Debug As thesis Failed」。調試As thesis失敗 - 找不到錯誤代碼
也許有人可以告訴我我的錯誤在調試所有內存地址接縫罰款。
Lines.h
#ifndef LINES_H
#define LINES_H
#include <stdio.h>
#include <iostream>
using namespace std;
class Lines
{
public:
Lines(int _laenge) : fuellzeichen{ '#' }, name{ "Hans-Peter" }, laenge{ _laenge }{};
Lines(int _laenge, char _fuellzeichen) : fuellzeichen{ _fuellzeichen }, laenge{ _laenge }, name{ "Hans-Peter" }{};
Lines(int _laenge, char _fuellzeichen, char* _name) : fuellzeichen{ _fuellzeichen }, laenge{ _laenge }, name{ _name }{};
Lines(const Lines& _l);
~Lines();
Lines& operator= (const Lines & _l);
private:
char fuellzeichen;
int laenge;
char* name;
};
#endif // LINES_H
Lines.cpp
#include "Lines.h"
Lines::Lines(const Lines& _l){
fuellzeichen = _l.fuellzeichen;
laenge = _l.laenge;
int len = strlen(_l.name) + 1;
name = new char[len];
strncpy(name, _l.name,len);
}
Lines& Lines::operator=(const Lines& _l){
if (this == &_l){
return *this;
}
Lines tmp(_l);
swap(fuellzeichen, tmp.fuellzeichen);
swap(name, tmp.name);
swap(laenge, tmp.laenge);
return *this;
}
Lines::~Lines(){
delete[] name;
}
的main.cpp
#include "Lines.h"
int main(int argv, char* args[]){
Lines a(20,'#');
Lines b(a);
}
用'std :: string'替換'char * name'並將所有pr oblems將消失。您不需要再定義自己的拷貝構造函數,賦值運算符或析構函數。 – 2014-11-04 17:39:00