关于默认构造函数的
我自己定义了一个BiGiNT类
BigInt():number('\0'),length(0){};
number是string类型,length是Int
这个是默认构造函数
istream& operator>>(istream& is,BigInt& a)
{
is>>a.number;
a.length=a.number.size();
return is;
}
在main()里
BigInt a;
cin>>a;
为什么编译没错,执行时出现invalid null pointer?
是说a没有初始化?
究竟哪里出错了?我希望能够不初始化也能正常执行
[解决办法]
string类 不能用一个char字符来构造。
#include <iostream>using namespace std;class BigInt {private: string number; int length;public: BigInt():number(""),length(0) {}//这里改一下 friend istream& operator>> (istream& is,BigInt& a) { is>>a.number; a.length=a.number.size(); return is; } };int main(void){ BigInt a; cin>>a; return 0;}
[解决办法]
string ( );
string ( const string& str );
string ( const string& str, size_t pos, size_t n = npos );
string ( const char * s, size_t n );
string ( const char * s );
string ( size_t n, char c );
template<class InputIterator> string (InputIterator begin, InputIterator end);
这些是string 的构造函数,你的number('\0') 调用了 string ( const char * s ); 运行时会出错的。number是空指针了。
number('\0') 跟 number(0) 和 number(NULL) 一样。