重载基础数据类型

时间:2016-05-15 03:48:04

标签: c++ operator-overloading

是否可以使用额外的运算符重载charint这样的基类型?

我尝试了什么:

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.

2 个答案:

答案 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); }
        }
};