Я немного озадачен тем, почему этот код компилируется и запускается:
class A
{
private:
int* b;
public:
A() : b((int*)0xffffffff) {}
int* get_b() const {return this->b;}
};
int main()
{
A a;
int *b = a.get_b();
cout<<std::hex<<b<<endl;
return 0;
}
Результат выполнения этого кода тоже FFFFFFFF
... неожиданно для меня. Разве this->b
не должен возвращать const int*
, поскольку он находится в функции-члене const? и поэтому строка return
должна генерировать ошибку приведения компилятора при попытке привести const int*
к int*
Очевидно, здесь есть пробел в моих знаниях о том, что означают функции-члены const.
Буду признателен, если кто-нибудь поможет мне преодолеть этот разрыв.