不能使函数const

时间:2013-10-08 20:22:01

标签: c++ arrays class const

我有这堂课:

class BankAccount{
    private:
        char* ownerName;
        char IBAN[14];
        double balance;
}

我有这个功能:

char* BankAccount::getIban(){
    return this->IBAN;
}

那个有效,但我想知道为什么我不能像这样定义getIban(),因为我想确保不能更改IBAN:

char* BankAccount::getIban()const{
    return this->IBAN;
}

它说return value does not match the function type.

3 个答案:

答案 0 :(得分:8)

const函数中,所有成员的行为就像它们是const一样,在您的情况下,成员IBAN等同于const char IBAN[14]。你不能得到一个非const char*来引用一个const数组,从而引发错误。你可能想这样做:

const char* BankAccount::getIban() const {
    return IBAN;
}

答案 1 :(得分:0)

你必须在标题

中的函数声明中包含const

答案 2 :(得分:-1)

如果在定义方法时声明一个方法const,编译器WONT让你可能通过将指针传递给const不在const之外的东西来毁掉那个const。

错误就是这样。你需要返回一个const char *,这样编译器知道你何时使用该函数,结果类型是一个const char *< - 你可以看但不能触摸,所以IBAN值保持不变。

如果你让const方法返回一个const char *(返回IBAN)它会没问题,因为当你使用那个方法时,C ++不会让你改变调用它的结果指向的内容。