是否可以使用额外的运算符重载char
或int
这样的基类型?
我尝试了什么:
bool char::operator[](const int param) {
if (param < 8) {
return (*this) & std::pow(2, param);
}
else {
exit(13);
}
}
我想要发生什么:
我希望函数返回字符变量param
位的值。
发生了什么:
它不编译。错误:'bool' followed by 'char' is illegal.
答案 0 :(得分:1)
没有。 char
是一种基本类型,因此它不能重载其成员运算符,因为它没有成员。
此外,operator[]
无法实现为非成员函数。所以在这种情况下,我担心你运气不好。
答案 1 :(得分:0)
你不能超载char或使用&#39;这个&#39;因为它代表了类的实例化,但是如果你可以创建自己的类Char或CHAR等...类似于String类或者你可以使用向量使用自己的类编写Lists或Stacks的方式。 Here you go
所以你可以拥有像
这样的东西class Char{
private:
char cx;
public:
Char(){}
Char(char ctmp):cx(ctmp){}
Char(Char &tmp):cx(tmp.cx){ }
~Char(){ }
char getChar(void){ return this->cx; }
// operator implementations here
Char& operator = (const Char &tmp)
{
cx = tmp.cx;
return *this;
}
Char& operator = (char& ctmp){
cx = ctmp;
return *this;
}
bool operator[](const int param) {
if (param < 8) { return (*this) & std::pow(2, param); }
else { exit(13); }
}
};