, dirkgently, : , .
- , , , , . , C , , :
class Book {
char *nm;
public:
Book(const char *name) : nm(copystr(name)) { }
Book(const Book &o) : nm(copystr(o.nm)) { }
~Book() { delete[] nm; }
Book& operator=(const Book &o) {
Book cp = o;
swap(cp);
return *this;
}
void swap(Book &o) {
std::swap(this->nm, o.nm);
}
};
char *copystr(const char *name) {
if (!name) return 0;
char *newname = new char[strlen(name)+1];
std::strcpy(newname, name);
return newname;
}
. " !" ? , , . , , , . - , , Book. , , . , TR1.
, , , , =, :
class Book {
char *nm;
public:
Book(const char *name) : nm(copystr(name)) { }
~Book() { delete[] nm; }
private:
Book(const Book &o);
Book& operator=(const Book &o);
};
, strdup . ( GNU), "strdup.c". , , , : "function_name.c", , , GNU, , , , . malloc .
http://www.koders.com/c/fidF16762E3999BA95A0B5D87AECB0525BA67CEE45A.aspx
http://cvs.frodo.looijaard.name/viewvc/cgi-bin/viewvc.cgi/public/psiconv/compat/strdup.c?revision=1.1.1.1&view=markup