Когда друзья пахнут? Они всегда пахнут?
Это пахнет?
class DatabaseImpl {
private:
void _reallyWriteToDatabase(char*);
friend class Database;
friend class A; friend class B; friend class C; friend class D; };
Я думаю, что большинство их друзей пахнут. Почему другие друзья не могут просто использовать Database
? Как вы думаете, Database
тоже пахнет? Я не знаю.
Как насчет этого? У него есть друг. Они пахнут?
class A {
public:
explicit A(int i) : data_(i) {}
int getData() const { return data_; }
private:
friend std::ostream& operator<<(const A& a, std::ostream& out) {
return out << "A{" << a.data_ << "," << a.moreData_ "}\n";
}
int data_;
int moreData_ = 23;
};
Хорошо или плохо? Я думаю, это нормально, но почему бы просто не сделать его функцией-членом? Какую гибкость это нам дает?
Что насчет этого"?
Функция friend
на object_t
придерживается формы других функций draw
. При небольшом количестве кода, если различные задействованные типы соответствуют одной и той же концепции, их можно хранить как object_t
в document_t
и использовать для draw()
Еще много об этом здесь
Первоначально опубликовано на gist.github.com.