加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

构造函数和析构函数 – c

发布时间:2020-12-16 06:45:29 所属栏目:百科 来源:网络整理
导读:我需要编写一个程序,在屏幕上打印100颗星(在随机的地方),然后星星一个接一个地慢慢消失.我不允许使用循环或递归. 我试图与构造函数和析构函数一起玩,但我不能让星星一个接一个地消失(而不是一起消失). 有任何想法吗? 谢谢, 里 对不起 – 忘了提我正在使用c
我需要编写一个程序,在屏幕上打印100颗星(在随机的地方),然后星星一个接一个地慢慢消失.我不允许使用循环或递归.
我试图与构造函数和析构函数一起玩,但我不能让星星一个接一个地消失(而不是一起消失).
有任何想法吗?

谢谢,

对不起 – 忘了提我正在使用c

我目前的访问违反了无用的代码:

class star {
    int x;
    int y;
public:
    star(){
        x = rand()%80;
        y = rand()%80;
        PaintcharOnRandomLocation('*',x,y);
    };
    ~star(){
        PaintcharOnRandomLocation(' ',y);
    };

};

class printAll{
    star* arr;
public:
    printAll(){
    arr = new star[100];
    };


    ~printAll(){
        delete[] arr;
    };


};
void doNothing(printAll L){
};

void main()
{
    srand ( time(NULL) );   
    doNothing(printAll());

     getch();
};

解决方法

似乎没有循环/递归的唯一方法是这样的:

class Star
{
  Star() 
  { 
     //constructor shows star in a a random place
  }
  ~Star()
  {
    //destructor removes star and sleeps for a random amount of time
  }
};

int main() 
{
   Star S[100];
}

这实际上只是一个愚蠢的技巧,因为编译器必须运行每个星的构造函数来初始化数组,然后运行EACH star的析构函数,因为它超出了范围.

这也是一个糟糕的伎俩,因为主要功能中的所有工作都是不透明和不可见的.在这种情况下使用循环显然会更好,并且在这样的析构函数中放置延迟实际上是令人困惑和不可维护的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读