⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 copy8.c

📁 linux下编程用 编译软件
💻 C
字号:
// { dg-do run  }// GROUPS passed copy-ctors/*This report is for GCC 2.3.3 running on a Sun/4.  The bug is that whena 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 failsto print the second line ["copy A('x')"], which indicates that it failedto 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;voiddie (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-constructorprivate:    A a;public:    X( const char * id ) : a(id) {}};void Func( X x ) {      // Function with call-by-value argument}intmain() {    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;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -