В C++ конструктор и деструктор могут быть встроенными функциями?
Короткий ответ — да. Любая constructor функция может быть объявлена constructors встроенной, и помещение constructors тела функции в определение cxx класса — один из способов ctor сделать это. Вы также могли destructors бы сделать:
class Foo
{
int* p;
public:
Foo();
~Foo();
};
inline Foo::Foo()
{
p = new char[0x00100000];
}
inline Foo::~Foo()
{
delete [] p;
}
Однако от компилятора cxx зависит, действительно ли cxx он встраивает функцию. VC++ в c++ значительной степени игнорирует cpp ваши запросы на встраивание. Он cxx будет встраивать функцию destructors только в том случае, если destructors сочтет это хорошей идеей. Последние destructor версии компилятора также constructors будут встраивать вещи, которые constructor находятся в отдельных файлах destructor .obj и не объявлены встроенными c++ (например, из кода в разных destructors файлах .cpp), если вы используете cpp link time code generation.
Вы можете использовать ключевое constructor слово __forceinline, чтобы сообщить компилятору, что constructors вы действительно имеете в constructors виду это, когда говорите c++ «встроить эту функцию», но constructors обычно это того не стоит. Во constructor многих случаях компилятор cpp действительно знает лучше.
c++
constructor
destructor
В C++ конструктор и деструктор могут быть встроенными функциями?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.