小编Jef*_*ffV的帖子

2454
推荐指数
25
解决办法
111万
查看次数

224
推荐指数
11
解决办法
9万
查看次数

为什么要使用"PIMPL"成语?

背景资料:

所述PIMPL成语(指针实现)是用于执行隐藏在其中一个公共类包装的结构或类,可以不在库的公共类是的一部分外部看到的技术.

这会隐藏来自库用户的内部实现细节和数据.

在实现这个习惯用法时,为什么要将公共方法放在pimpl类而不是公共类上,因为公共类方法实现会被编译到库中,而用户只有头文件?

为了说明,此代码将Purr()实现放在impl类上并将其包装起来.

为什么不直接在公共类上实现Purr?

// header file:
class Cat {
    private:
        class CatImpl;  // Not defined here
        CatImpl *cat_;  // Handle

    public:
        Cat();            // Constructor
        ~Cat();           // Destructor
        // Other operations...
        Purr();
};


// CPP file:
#include "cat.h"

class Cat::CatImpl {
    Purr();
...     // The actual implementation can be anything
};

Cat::Cat() {
    cat_ = new CatImpl;
}

Cat::~Cat() {
    delete cat_;
}

Cat::Purr(){ cat_->Purr(); }
CatImpl::Purr(){
   printf("purrrrrr");
}
Run Code Online (Sandbox Code Playgroud)

c++ oop information-hiding pimpl-idiom

128
推荐指数
5
解决办法
10万
查看次数

C中最常见的命名约定是什么?

C中常用的命名约定是什么?我知道至少有两个:

  1. 具有lower_case_functions的GNU/linux/K&R
  2. ?名称 ?使用UpperCaseFoo函数

我只在这里谈论C.我们的大多数项目都是使用C的小型嵌入式系统.

这是我计划用于下一个项目的那个:


C命名惯例

Struct              TitleCase
Struct Members      lower_case or lowerCase

Enum                ETitleCase
Enum Members        ALL_CAPS or lowerCase

Public functions    pfx_TitleCase (pfx = two or three letter module prefix)
Private functions   TitleCase
Trivial variables   i,x,n,f etc...
Local variables     lower_case or lowerCase
Global variables    g_lowerCase or g_lower_case (searchable by g_ prefix)
Run Code Online (Sandbox Code Playgroud)

c naming-conventions

114
推荐指数
8
解决办法
14万
查看次数

Linux的虚拟串行端口

我需要在Linux上测试串口应用程序,但是,我的测试机只有一个串口.

有没有办法向Linux添加虚拟串口并通过shell或脚本模拟设备来测试我的应用程序?

注意:我无法重新映射端口,它在ttys2上硬编码,我需要在编写时测试应用程序.

linux serial-port virtual-serial-port

111
推荐指数
9
解决办法
15万
查看次数

在VC++中是否有在标题和源文件之间移动的快捷方式?

这是我在Eclipse(Ctrl+ Tab)中习惯使用的一个功能.Visual C++中是否有等价物?

keyboard-shortcuts visual-c++

101
推荐指数
9
解决办法
8万
查看次数

如何从C++中的字符串获取文件扩展名

给定一个字符串"filename.conf",如何验证扩展部分?

我需要一个跨平台的解决方案.

c++ string filenames file-extension

73
推荐指数
9
解决办法
16万
查看次数

硬件描述语言的最佳实践是什么(Verilog,VHDL等)

在实施HDL代码时应该遵循哪些最佳实践?

与更常见的软件开发领域相比,有哪些共性和差异?

verilog vhdl hdl

69
推荐指数
6
解决办法
2万
查看次数

如何以图形方式显示.map文件中的内存布局?

我的gcc构建工具链生成一个.map文件.如何以图形方式显示内存映射?

c c++ linker

62
推荐指数
2
解决办法
2万
查看次数

单个撇号在Scala中意味着什么?

ScalaActors.pdf上的这个幻灯片放映中,单个引号指示何时将消息发送给pong actor?

class Ping(count: int, pong: Pong) extends Actor {
def act() {
   pong ! 'Ping // what does the single quote indicate???
      receive {
         case 'Pong =>
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

scala actor

60
推荐指数
2
解决办法
1万
查看次数