linux下编程用 编译软件

源代码在线查看: copy8.c

软件大小: 49607 K
上传用户: IsABC
关键词: linux 编程 编译 软件
下载地址: 免注册下载 普通下载 VIP

相关代码

				// { dg-do run  }				// GROUPS passed copy-ctors				/*				This report is for GCC 2.3.3 running on a Sun/4.  The bug is that when				a class instance is passed-by-value, GCC does not correctly copy the value.				At the end of this report is an example program that demonstrates the bug.  				It should print:									construct A('x')					copy A('x')					destruct A('x')					destruct A('x')								and in fact does for IBM's xlC C++.  However, for GCC 2.3.3, it fails				to print the second line ["copy A('x')"], which indicates that it failed				to call the copy-constructor for class A when it should have.  Below is a 				typescript that lists the program, shows how I compiled it, and shows the 				incorrect output.				*/								extern "C" int printf (const char *, ...);				extern "C" void exit (int);								int count = 0;								void				die (int x)				{				  if (x != ++count)				    {				      printf ("FAIL\n");				      exit (1);				    }				}								class A { // Class with explicit & instrumented copy-constructor and destructor.				public:				    const char * id;				    A( const char * id1 ) : id(id1) { die (1); }								    // Copy constructor				    A( const A& a ) : id(a.id) { die (2); }								    // Destructor				    ~A() { count++; if (count != 3 && count != 4) die (-1); }				};								class X { // Class without explicit copy-constructor				private:				    A a;				public:				    X( const char * id ) : a(id) {}				};								void Func( X x ) {      // Function with call-by-value argument				}								int				main() {				    X x("x");           // Construct instance of x.								    // The next line should call the copy-constructor for X since x is				    // being passed by value.  For GCC 2.3.3 on a Sun/4, it does not.				    Func(x);								    printf ("PASS\n");				    return 0;				}							

相关资源