首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于默许构造函数的

2012-06-21 
关于默认构造函数的我自己定义了一个BiGiNT类BigInt():number(\0),length(0){}number是string类型,leng

关于默认构造函数的
我自己定义了一个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字符来构造。

C/C++ code
#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) 一样。

热点排行