找出并改正下述类声明中的错误:
class nifty
{
// data
char personality[];
int talents;
// methods
nifty();
nifty(char * s);
ostream & operator<<(ostream & os, nifty & n);
}
nifty:nifty[]
{
personality = NULL;
talents = 0;
}
nifty:nifty(char * s)
{
personality = new char [strlen(s)];
personlaity = s;
talents = 0;
}
ostream & nifty:operator<<(ostream & os, nifty & n)
{
os << n;
} 
#include <iostream> #include <cstring> using namespace std; class nifty { private: // optional char personality[40]; // provide array size int talents; public: // needed // methods nifty(); nifty(const char * s); friend ostream & operator<<(ostream & os, const nifty & n); }; // note closing semicolon nifty::nifty() { personality[0] = '\0'; talents = 0; } nifty::nifty(const char * s) { strcpy(personality, s); talents = 0; } ostream & operator<<(ostream & os, const nifty & n) { os << n.personality << '\n'; os << n.talent << '\n'; return os; }#include <iostream> #include <cstring> using namespace std; class nifty { private: // optional char * personality; // create a pointer int talents; public: // needed // methods nifty(); nifty(const char * s); nifty(const nifty & n); -nifty() { delete [] personality; } nifty & operator=(const nifty & n) const; friend ostream & operator<<(ostream & os, const nifty & n); }; // note closing semicolon nifty::nifty() { personality = NULL; talents = 0; } nifty::nifty(const char * s) { personality = new char [strlen(s) + 1]; strcpy(personality, s); talents = 0; } ostream & operator<<(ostream & os, const nifty & n) { os << n.personality << '\n'; os << n.talent << '\n'; return os; }