Прежде всего в C ++, если вы напишите функцию следующим образом:
struct Buffer {
};
Buffer calculateAndReturnBuffer() {
// Some computations
return Buffer{};
}
или что-то вроде этого:
struct Buffer {
};
Buffer calculateAndReturnBuffer() {
// Some computations
return {}; // C++ uniform initialization
}
Объект буфера возвращается по значению, это означаетчто в соответствии с основными правилами в C ++ он будет скопирован (но из-за пакета оптимизаций он не будет)
Если вы попытаетесь вернуть null в этом случае:
struct Buffer {
};
Buffer calculateAndReturnBuffer() {
// Some computations
return nullptr; // or NULL
}
Это будетне работает, потому что nullptr является типом указателя, а NULL определен для 0, который является целочисленным типом, и эти объекты не могут быть преобразованы в тип буфера. Вам нужно будет сделать следующее:
struct Buffer {
};
Buffer * calculateAndReturnBuffer() {
// Some computations
return nullptr; // or NULL
}
или что-то вроде этого:
struct Buffer {
};
Buffer * calculateAndReturnBuffer() {
// Some computations
return {}; // C++ uniform initialization
}
Вернуться к вашему вопросу ... Но во всех случаях вы можете использовать фигурные скобки {}