小编Foo*_*ooo的帖子

Mediator Vs Observer面向对象的设计模式

我一直在阅读四人帮,以解决我的一些问题,并遇到了Mediator模式.

我之前在项目中使用了Observer来制作一些GUI应用程序.我有点困惑,因为我发现两者之间没有太大区别.我浏览找到差异,但找不到任何适合我的查询的答案.

有人可以帮助我区分两者,并用一些明确划分两者的好例子吗?

oop design-patterns mediator observer-pattern

84
推荐指数
7
解决办法
3万
查看次数

const引用可以赋值为int吗?

我遇到了一段代码片段

const int& reference_to_const_int = 20;
cout<<"\n  reference_to_const_int = "<<reference_to_const_int<<endl;     
Run Code Online (Sandbox Code Playgroud)

此代码使用输出编译和执行: -

reference_to_const_int = 20
Run Code Online (Sandbox Code Playgroud)

这对我来说很奇怪.据我所知,引用不占用内存,它们是其他变量的别名.因此我们不能说

int& reference_to_int = 30;
Run Code Online (Sandbox Code Playgroud)

上述声明不得编译给出错误: -

 error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’
Run Code Online (Sandbox Code Playgroud)

"const int&"案件究竟发生了什么?需要完整的解释.

请帮助.

谢谢

c++ memory const reference

10
推荐指数
2
解决办法
3642
查看次数

命名空间包含是否会增加exe的大小

我参加了一个会话,其中教导我们不应该使用"using namespace std",而是使用"std :: cout"来使用std命名空间的一些调用,因为这会增加二进制文件的大小

我尝试用以下实验验证相同的内容.代码及其输出如下: -

    [Fooo@EXP]$ cat namespacestd.cpp
    #include<iostream>

    #ifdef STD
            using namespace std;
    #endif

    int main()
    {
    #ifndef STD
            std::cout<<"\n ==> Workign \n";
    #else
            cout<<"\n ==> Workign \n";
    #endif

    return 0;

    }


    [Fooo@EXP]$ time g++ -c namespacestd.cpp -DSTD

    real    0m0.246s
    user    0m0.215s
    sys     0m0.030s
    [Fooo@EXP]$ size namespacestd.o
       text    data     bss     dec     hex filename
        310       8       1     319     13f namespacestd.o  
    [Fooo@EXP]$ time g++ -c namespacestd.cpp

    real    0m0.258s
    user    0m0.224s
    sys     0m0.034s
    [Fooo@EXP]$ size namespacestd.o
       text    data     bss …
Run Code Online (Sandbox Code Playgroud)

c++ linux size namespaces

6
推荐指数
1
解决办法
965
查看次数

printf使用堆栈?

可能重复:
对包含前缀和后缀运算符的printf()感到困惑.

我遇到了一个包含以下代码段的代码,

int main()  {
    int c = 100;
    printf("\n %d \t %d \n", c, c++);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我预计输出为100和101,但输出为

 101     100
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我知道原因吗?

c++ programming-languages

5
推荐指数
3
解决办法
929
查看次数

轮询立即从驱动程序退出

这是我第一次在 linux 内核中实现驱动程序并面临这个问题的经验。

我正在尝试在我的角色驱动程序中实现“poll()”。我已经调用了 poll_wait() 并传递了一个等待队列。

当从用户空间程序打开此驱动程序的设备文件并在此设备文件描述符(fd)上调用“轮询”系统调用时,即使没有数据要发送到用户空间,轮询系统调用也会立即退出。

它不等待甚至超时时间。

我无法弄清楚是什么导致了这个问题。

任何人都可以提出任何解决方案吗?

c linux-device-driver linux-kernel

3
推荐指数
1
解决办法
926
查看次数