Если вы используете более новую версию Vue.js, у вас должно быть .default
- require('./components/Welcome.vue')
, поэтому строка 5 будет выглядеть следующим образом
{path: '/', component: require('./components/Welcome.vue').default }
Переполнение стека : Зачем нужен метод по умолчанию после require () в Vue?
Если у Вас есть класс, это разработано для семантики копии, и Вы выделяете/освобождаете набор памяти излишне, я видел этот являющийся плохой практикой. В целом, тем не менее, это не. Существует много классов, которые могут использовать устройство хранения данных "кучи". Просто удостоверьтесь, что Вы свободны от утечек памяти (освободите вещи в деструкторе, подсчете ссылок, и т.д.), и Вы в порядке.
Если Вы хотите больше гибкости, рассматриваете разрешение Вашему пользователю указать Средство выделения. Я объясню.
Определенные классы, например. std::vector
, строка, карта, и т.д. нуждается в устройстве хранения данных "кучи" для структур данных, которые они представляют. Это не рассмотрело невежливости; когда Вы имеете автоматически выделенный vector
, пользователь, как ожидают, будет знать, что буфер выделяется когда vector
конструктора вызывают:
void foo() {
// user of vector knows a buffer that can hold at least 10 ints
// gets allocated here.
std::vector<int> foo(10);
}
Аналогично, для std::string
, Вы знаете, что существует внутреннее, выделенный "куче" char*
. Существует ли один на string
экземпляр обычно до реализации STL; часто времена они - считаемая ссылка.
Однако почти для всех классов STL, у пользователей действительно есть выбор того, куда вещи помещаются, в котором они могут указать средство выделения. vector
определяется отчасти как это:
template <typename T, typename Alloc = DefaultAllocator<T> >
class vector {
// etc.
};
Внутренне, vector
использование Alloc
(в каких значениях по умолчанию к тому, что средство выделения по умолчанию для T) для выделения буфера и другого устройства хранения данных "кучи" это, возможно, нуждается. Если пользователям не нравится стратегия выделения по умолчанию, они могут указать одно собственное:
vector<int, MyCustomAllocator> foo(10);
Теперь, когда конструктор выделяет, это будет использовать a MyCustomAllocator
вместо значения по умолчанию. Вот некоторые детали о записи Вашего собственного средства выделения STL.
Если Вы волнуетесь, что это могла бы быть "невежливость" использовать "кучу" для определенного устройства хранения данных в Вашем классе, Вы могли бы хотеть считать предоставление пользователей Вашего класса опцией как это так, чтобы они могли указать, как вещи состоят в том, чтобы быть выделены, если Ваша стратегия по умолчанию не соответствует их потребностям.
Я не считаю это плохой практикой вообще. Существуют все виды причин, почему Вы могли бы хотеть явно выделить членскую переменную через новый. Вот некоторые первое, что пришло на ум.
На обороте, если бы Ваши пользователи создают много экземпляров Вашего класса для использования на стеке, было бы выгодно использовать объекты вместо указателей для Ваших членских переменных просто, потому что выделения/освобождение "кучи" являются медленными для сравнения. Более эффективно избежать "кучи" в этом случае, принимая во внимание первый маркер выше, конечно.
То, куда класс помещает своих участников, менее важно, чем это, управление ими содержится в классе; т.е. клиентам и подклассам не придется волноваться о членской переменной объекта.
Самый простой способ сделать это должно было бы заставить их сложить переменные. Но в некоторых случаях, такой, как будто Ваш класс имеет динамическую структуру данных как связанный список, он не имеет смысла.
Но если Вы удостоверяетесь, что Ваши объекты моются после themeselves, который должен быть хорошо для большинства приложений.
хм, я действительно не понимаю Вашего вопроса.
Если у Вас есть класс:
class MyOtherClass;
class MyClass
{
MyOtherClass* m_pStruct;
};
Затем у клиента MyClass нет реального выбора о том, как m_pStruct будет выделен.
Но это будет решение клиента о том, как класс MyClass будет самостоятельно выделен, или на стеке или на "куче":
MyClass* pMyClass = new MyClass;
или
MyClass myClass;