2013-07-28 2 views
2

Есть ли смысл объявлять дружбу в защищенном разделе, а не публично? Например, в этом коде:Объявление друга в защищенной секции

class Shape { 
//... 
protected: 
    friend ostream& operator<<(ostream& os, const Shape& s); 
    virtual void print(ostream& os) const = 0; 
}; 

[Обратите внимание, что форма является аннотацией]

Мог ли я просто поставить друг и объявление функции в общественных местах? Спасибо!

ответ

2

Есть ли смысл объявлять дружбу в охраняемом разделе, , а не публично?

Нет. Класс друзей имеет тот же уровень доступа, независимо от того, появляется ли декларация друга в общедоступной, защищенной или частной части определения класса. link

Мог ли я просто поставить друг и объявление функции в общественности?

Таким образом, да, неважно, было ли объявление найдено в частной, общественной или защищенной части вашего класса.