按要求编写程序 1)编写Animal类,类中定义sleep0方法,方法中输出"睡觉"即可. 2)

按要求编写程序 1)编写Animal类,类中定义sleep0方法,方法中输出"睡觉"即可. 2),第1张

class Animal{

public void sleep(){

Systemoutprintln("睡觉");

}

}

class Dog extends Animal{

public void sleep(){

Systemoutprintln("狗睡觉");

}

}

class Pig extends Animal{

public void sleep(){

System out println("猪睡觉");

}

}

public class Test {

public static void main(String[] args) {

Animal animal=new Dog() ;

animalsleep();

animal=new Pig();

animalsleep();

}

}

输出结果

使用平台相关的 Sleep 或 nanosleep 以后,界面为什么没有反应?QThread 中提供了protected 权限的 sleep 函数,如何用到主线程中?使用QTest 中的 qSleep,在windows下如何隐藏控制台?这些问题其实归结为一点:在主线程中使用这些函数是一种错误,这会直接导致界面无法刷新,用户与程序无法交互。Qt不提供,是因为你不需要在主线程中使用 sleep 函数。如何让程序等待一段时间QTimeQTime t; tstart(); while(telapsed()<1000);这种死循环也是一种常见错误用法。但改成正确的还是比较简单的:QTime t; tstart(); while(telapsed()<1000) QCoreApplication::processEvents();不停地处理事件,以使得程序保持响应。QElapsedTimer这是Qt47引入的新的类,和QTime相比,它提供了更快的计算 elapsed 时间的方法。QElapsedTimer t; tstart(); while(telapsed()<1000) QCoreApplication::processEvents();QTest::qWait这是QTest模块提供的等待函数下面是其源代码(和我们前面的代码很像吧?):namespace QTest { inline static void qWait(int ms) { Q_ASSERT(QCoreApplication::instance()); QElapsedTimer timer; timerstart(); do { QCoreApplication::processEvents(QEventLoop::AllEvents, ms); QTest::qSleep(10); } while (timerelapsed() < ms); } 其实没什么魔力,对吧?但是因为它QTest模块,所以在程序中我们不要使用它。QEventLoop配合QTimer使用局部的 eventLoop 也是一个不错的选择。例子: QEventLoop eventloop; QTimer::singleShot(100, &eventloop, SLOT(quit())); eventloopexec();QTimer 和 QBasicTimer这两个和本文没有什么直接关系,QTimer估计大家都很熟了。而QBasicTimer估计很少有人用。与QTimer相比,QBasicTimer更快速、轻量、底层。与QTimer相比,它不是QObject的派生类。跨平台的sleep尽管一开始我们就说了,不需要这个东西。但不排除某种场合下,你确实需要这个东西。橹械暮��芗虻ィ╳indows下调用Sleep,其他平台调用 nanosleep):void QTest::qSleep(int ms) { QTEST_ASSERT(ms > 0); #ifdef Q_OS_WIN Sleep(uint(ms)); #else struct timespec ts = { ms / 1000, (ms % 1000) 1000 1000 }; nanosleep(&ts, NULL); #endif }看QThread的源码,windows下同样直接调用Sleep,但非windows的实现比这个就复杂多了:/ \internal helper function to do thread sleeps, since usleep()/nanosleep() aren't reliable enough (in terms of behavior and availability)/staticvoidthread_sleep(structtimespec ti){pthread_mutex_tmtx;pthread_cond_tcnd;pthread_mutex_init(&mtx, 0);pthread_cond_init(&cnd, 0);pthread_mutex_lock(&mtx); (void) pthread_cond_timedwait(&cnd, &mtx, ti);pthread_mutex_unlock(&mtx);pthread_cond_destroy(&cnd);pthread_mutex_destroy(&mtx);}voidQThread::sleep(unsignedlongsecs){structtimevaltv;gettimeofday(&tv, 0);structtimespecti;titv_sec = tvtv_sec + secs;titv_nsec = (tvtv_usec 1000);thread_sleep(&ti);}

C语言标准库中没有sleep这个函数,它实际上是一个系统API函数。

函数功能: 执行挂起一段时间

1、在VC中使用带上头文件,而且全称为Sleep(),第一个字母需要大写。

#include <windowsh> //需要添加头文件

   Sleep(unisgned long); //函数声明

Windows中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该写成:

     Sleep(1000);

2、在gcc中,使用的头文件因gcc版本的不同而不同,一般来说,linux系统需要添加的头文件为:

#include <unistdh>

应该是Sleep(1000);

在Linux下,sleep()里面的单位是秒,而不是毫秒。

C++中头文件<windowsh>下的函数

作用:延时,程序暂停若干时间。

时间,就是他的参数,单位是毫秒。

例如:

Sleep (500) ;

就是到这里停半秒,然后继续向下执行。

——————————————————

在Linux C语言中 Sleep的单位是秒

Sleep(5); //停5秒

注意:Sleep的S要大写。

——————————————————

Visual Basic

声明:Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

库名:kernel32

说明:dwMilliseconds 必要参数,停顿的时间。单位:毫秒(ms)

文章出处:DIY部落(>

以上就是关于按要求编写程序 1)编写Animal类,类中定义sleep0方法,方法中输出"睡觉"即可. 2)全部的内容,包括:按要求编写程序 1)编写Animal类,类中定义sleep0方法,方法中输出"睡觉"即可. 2)、如何让 Qt 程序 Sleep、c语言sleep用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10091942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存