这是我写的高精度类的一部分:
#include <bits/stdc++.h>
using namespace std;
class ubigint{
public:
ubigint(){};
ubigint(string s){
for(int i=s.size()-1;i>=0;i--) nums.push_back(s[i]-'0');
}
ubigint(const char* s){ubigint(string(s));}
short& operator [](int x){return nums[x];}
operator string(){
string x;
for(int i=nums.size()-1;i>=0;i--) x+=(*this)[i]+'0';
return x;
}
private:
vector<short> nums;
};
ostream& operator <<(ostream& out,ubigint a){
out<<string(a);
return out;
}
signed main() {
ubigint x="123";
cout<<x;
return 0;
}
此时,它不会输出,但如果把ubigint x="123";改成ubigint x=(string)"123";,就正常了
求原因