Run Code | API | Code Wall | Misc | Feedback | Login | Theme | Privacy | Patreon |
Fruit_*************************************************** 在栈里面创建对象的测试 (Fruit) Fruit(int, double, char) has been called (Apple) Apple(int, double, char, int, char) has been called Fruit(55, 0, r) size = 32, address = 0x0x7ffd16e24470 Apple (49, p) size = 40, address = 0x0x7ffd16e24470 (Apple) ~Apple() has been called The object Fruit(55, 0, r) has been deconstructed *************************************************** *************************************************** 通过普通的new,在堆里面创建对象的测试 size_t = 40 (Apple) void* operator new(size_t) has been called (Fruit) Fruit(int, double, char) has been called (Apple) Apple(int, double, char, int, char) has been called Fruit(1, 0, b) size = 32, address = 0x0x86ac20 Apple (97, k) size = 40, address = 0x0x86ac20 (Apple) ~Apple() has been called The object Fruit(1, 0, b) has been deconstructed (Apple) void operator delete(void*) has been called *************************************************** 测试调用抛出异常的构造函数,重写了operator new,检测抛出异常后,会调用哪个delete size_t = 40 (Apple) void* operator new(size_t) has been called (Fruit) Fruit(int, double, char) has been called (Apple) Apple(int) has been called TestException() has been called The object Fruit(11, 0, x) has been deconstructed (Apple) void operator delete(void*) has been called exception catched TestException ~TestException() has been called *************************************************** 测试抛出异常的构造函数,重写并调用了placement new,检测抛出异常后,会调用哪个delete (Apple placement new <int>) void* operator new(size_t, int) has been called (Fruit) Fruit(int, double, char) has been called (Apple) Apple(int) has been called TestException() has been called The object Fruit(69, 0, r) has been deconstructed (Apple placement delete <int>) void operator delete(void*, int) has been called exception catched TestException ~TestException() has been called *************************************************** 测试调用一个不成对的placement new,检测抛出异常后,会调用哪个delete size_t = 40 (Apple placement new <char>) void* operator new(size_t, char) has been called (Fruit) Fruit(int, double, char) has been called (Apple) Apple(int) has been called TestException() has been called The object Fruit(16, 0, y) has been deconstructed exception catched TestException ~TestException() has been called *************************************************** 测试调用正常的构造函数的过程,使用的是重写的operator new,检测会调用那个delete (Apple placement new <int>) void* operator new(size_t, int) has been called (Fruit) Fruit(int, double, char) has been called (Apple) Apple(int, double, char, int, char) has been called Fruit(26, 0, r) size = 32, address = 0x0x86bcb0 Apple (54, r) size = 40, address = 0x0x86bcb0 (Apple) ~Apple() has been called The object Fruit(26, 0, r) has been deconstructed (Apple) void operator delete(void*) has been called *************************************************** 数组测试 (Apple) void* operator new[](size_t) has been called (Fruit) Fruit(int, double, char) has been called (Apple) Apple(int, double, char, int, char) has been called Fruit(36, 0, c) size = 32, address = 0x0x86bce8 Apple (52, x) size = 40, address = 0x0x86bce8 (Fruit) Fruit(int, double, char) has been called (Apple) Apple(int, double, char, int, char) has been called Fruit(5, 0, s) size = 32, address = 0x0x86bd10 Apple (85, e) size = 40, address = 0x0x86bd10 (Apple) ~Apple() has been called The object Fruit(5, 0, s) has been deconstructed (Apple) ~Apple() has been called The object Fruit(36, 0, c) has been deconstructed (Apple) void operator delete[](void*) has been called |
λ
.NET NoSQL database for rapid development
|