ไม่ c ++ spec ระบุลำดับoperator new
และคอนสตรัคของในA
กรัม ++ ให้การสั่งซื้อจะ-> -> แต่เสียงดังกราว ++ ให้มันเป็น-> ->
ความแตกต่างเกิดจากพฤติกรรมที่ไม่ระบุหรือไม่?new C(A())
A()
new
C()
new
A()
C()
g ++: 7.4.0 clang ++: 10.0.0
#include <iostream>
#include <cstdlib>
struct A {
A() {
std::cout << "call A()\n";
}
};
struct C {
C(A) {
std::cout << "call S()\n";
}
void *operator new(size_t s) {
std::cout << "call new()\n";
return malloc(s);
}
};
int main() {
void *p = new C(A());
}