У меня есть класс A, который имеет ссылку на объект класса B в качестве члена.Конструктор копирования (и оператор присваивания) класса B является закрытым.Считаете ли вы правильным и хорошей идеей использовать конструктор копирования по умолчанию для A. (На самом деле мне нужна функциональность, в которой я могу хранить множество объектов для типа A в каком-то контейнере STL, который требует как назначений, так ивозможность копирования.)
class A
{
private:
B& b_;
public:
A(B& b) : b_(b){}
}
До сих пор, насколько мне известно, возражения против вышеуказанного метода следующие, но мой дизайн не с этим сталкивается.Я хотел бы знать, есть ли какие-либо другие проблемы / проблемы / проблемы в приведенном выше примере ...
- Копируется только ссылка, и, следовательно, будут проблемы, когда исходный объект b типаБ уничтожен.(Не применяется, поскольку b доступен во всей области видимости.)
- Является ли b_ уникальным для каждого экземпляра A?(Нет, B фактически создается только один раз в области видимости, поэтому он имеет эффект одноэлементного класса.)
Если есть другие проблемы, пожалуйста, перечислите их здесь.Я не заинтересован в явно определенном конструкторе копирования, но я придерживаюсь мнения об этом.