Лучший способ не использовать указатели на все:
int main()
{
ExampleClass myClass;
myClass.readSomeData(2.5);
}
Таким образом, нет необходимости в какой-либо проверки, а на самом деле, проверка this
внутри функции является спорным .
Если вам нужна обнуляемость, используйте вместо этого std::optional
.
Я сказал бы, что они - различные понятия, но не слишком отличающиеся для высказывания "мела и сыра".
Временная таблица хороша для повторного использования или выполнить несколько, обработка передает ряд данных.
CTE может использоваться или для рекурсивного вызова или только к улучшенной удобочитаемости.
И, как представление или встроенная табличная функция может также рассматриваться как макрос, который будет расширен в основном запросе
Временная таблица является другой таблицей с некоторыми правилами вокруг объема
Я сохранил procs, где я использую и (и табличные переменные также)
Это - действительно открытый законченный вопрос, и все это зависит от как то, что это было используемым и тип временной таблицы (Табличная переменная или традиционная таблица).
Традиционная временная таблица хранит данные во временном DB, который действительно замедляет временные таблицы; однако табличные переменные не делают.
Временные таблицы всегда находятся на диске - поэтому, пока Ваш CTE может быть сохранен в памяти, это, скорее всего, было бы быстрее (как табличная переменная, также).
Но с другой стороны, если загрузка данных Вашего CTE (или временная табличная переменная) становится слишком большой, это будет сохранено на диске также, таким образом, не будет никакого большого преимущества.
В целом я предпочитаю CTE по временной таблице, так как за этим следуют, я использовал его. Я не должен думать об отбрасывании его явно или чем-либо.
Так, никакой четкий ответ в конце, но лично, я предпочел бы CTE по временным таблицам.
CTE имеет свое применение - когда данные в CTE малы и значительно улучшается удобочитаемость, как в случае с рекурсивными таблицами. Однако его производительность, безусловно, не лучше, чем у табличных переменных, и когда мы имеем дело с очень большими таблицами, временные таблицы значительно превосходят CTE. Это связано с тем, что вы не можете определять индексы в CTE и когда у вас есть большой объем данных, который требует объединения с другой таблицей (CTE просто похож на макрос). Если вы объединяете несколько таблиц с миллионами строк записей в каждой, CTE будет работать значительно хуже, чем временные таблицы.