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

📄 crash47.c

📁 linux下编程用 编译软件
💻 C
字号:
// { dg-do assemble  }// GROUPS passed old-abortconst int TRUE = 1;const int FALSE = 0;class Rep {protected:    Rep(): count(0)	{ }    Rep(const Rep& other): count(0)	{ }    Rep& operator=(const Rep& other)	{ /* DO NOT copy over other.count */	  return *this; }public:		// TODO - for now    // Because it is to hard to restrict these operations to the descendants    // of Rep<REP> that we haven't named yet.  So we just make them public.    void inc()	{ count++; }    void dec()	{ if (0 == --count) delete this; }private:    unsigned count;};template<class REP>class Ref {public:    Ref(): rep(0)	{ }    Ref(const Ref<REP>& other): rep(other.rep)	{ if (rep) rep->inc(); }    ~Ref()	{ if (rep) rep->dec();	  rep = 0; }    Ref<REP>& operator=(const Ref<REP>& other)	{ if (rep != other.rep) {	    if (rep) rep->dec();	    rep = other.rep;	    if (rep) rep->inc(); }	  return *this; }    bool null() const	{ return 0 == rep ? TRUE: FALSE; }    bool valid() const	{ return 0 != rep ? TRUE: FALSE; }    REP* operator->() const		// should be a valid() reference	{ return rep; }    operator REP*() const;		// should be a valid() referenceprotected:    REP *rep;    Ref(REP *r): rep(r)	{ if (rep) rep->inc(); }    Ref<REP>& operator=(REP *r)	{ if (rep != r) {	    if (rep) rep->dec();	    rep = r;	    if (rep) rep->inc(); }	  return *this; }};template<class REP>Ref<REP>::operator REP*() const		// should be a valid() reference{ return rep; }template<class REP> inline intoperator==(const Ref<REP>& a, const Ref<REP>& b){ return (REP *) a == (REP *) b; }template<class REP> inline intoperator!=(const Ref<REP>& a, const Ref<REP>& b){ return (REP *) a != (REP *) b; }class XRep: public Rep {public:    int i;};intmain(){    Ref<XRep> y;    return y != y;}

⌨️ 快捷键说明

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