Язык программирования C++

Преобразования указателей и ссылок


При работе с указателями и ссылками компилятор автоматически выполняет только два вида преобразований.

Если имеется указатель или ссылка на производный тип, а требуется, соответственно, указатель или ссылка на базовый тип.

Если имеется указатель или ссылка на изменяемый объект, а требуется указатель или ссылка на неизменяемый объект того же типа.

size_t strlen(const char* s); // прототип функции class A { }; class B : public A { }; char* cp; strlen(cp); // автоматическое преобразование из // char* в const char*

B* bObj = new B; // преобразование из указателя на A* aObj = bObj; // производный класс к указателю на // базовый класс

Если требуются какие-то другие преобразования, их необходимо указывать явно, но в этом случае вся ответственность за правильность преобразования лежит на программисте.



Содержание раздела