Очень похожий на AOP подход - это вводить материал INotifyPropertyChanged на уже созданный объект на лету. Вы можете сделать это с помощью чего-то вроде Castle DynamicProxy. Вот статья, которая объясняет технику:
new (p) A()
- это размещение нового , которое не выделяет память и вызывает только конструктор.
Вызов обычного delete
для этого указателя, возвращаемого путем размещения new, является неопределенным поведением.
Для правильного освобождения здесь вам нужно вызвать деструктор и затем free
память:
pa->~A(); // or, in C++17 std::destroy_at(pa);
free(pa);