Виртуальные функции друзей для базового класса?

Я в процессе изучения языка, и это сомнение нуб.

Можно ли использовать функцию виртуального друга? Я не знаю, возможно ли это, я даже не тестировал его, но он мог бы быть полезен в некоторых ситуациях. Например, для перегруженного оператора & lt; & lt; ().

DerivedClass dc;
BaseClass &rbc = dc;
cout << rbc;

Я предполагаю, что это возможно, но я не уверен, поскольку функция друга не реализована в дизайне класса и теоретически не является ее частью (хотя в этом примере концептуально имеет смысл оператор & lt; & lt; () должен быть методом, но из-за синтаксических ограничений невозможно реализовать его как единое целое).

РЕДАКТИРОВАТЬ: моя проблема связана с этим примером:

BaseClass bc;
DerivedClass dc;
BaseClass *pArr[2];
pArr[1] = bc;
pArr[2] = dc;
for (int i = 0; i < 2; i++)
    cout << pArr[i];

в этом массиве смешанных объектов я хочу, чтобы для каждого вызывался правильный оператор & lt; & lt; ().

Ответы на вопрос(4)

Ваш ответ на вопрос