optimize2.c
来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 76 行
C
76 行
// { dg-do run }// { dg-options "-O2" }// // Copyright (C) 2001 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>// Bug 2823. Inlineing the body of a thunk broke things. But that's// rarely a sensible thing to do anyway.#include <cstdio>#include <cstdlib>int objCount = 0;struct Thing{ int count; Thing (); Thing (Thing const &src); ~Thing (); };Thing::Thing () :count (0){ objCount++; std::printf ("%p %s\n", (void *)this,__PRETTY_FUNCTION__);}Thing::Thing (Thing const &src) :count (0){ objCount++; std::printf ("%p %s\n", (void *)this, __PRETTY_FUNCTION__);}Thing::~Thing (){ std::printf ("%p %s\n", (void *)this, __PRETTY_FUNCTION__); if (count) std::abort (); count--; objCount--;}void x(Thing name){ // destruct name here}class Base{ public: virtual void test(const Thing& s) = 0;};class Impl : virtual public Base{ public: virtual void test(const Thing& s) { x(s); // copy construct temporary }};int main(){ Impl *impl = new Impl(); impl->test( Thing ()); // This will use a thunk return objCount != 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?