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用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)