当前位置:  开发笔记 > 编程语言 > 正文

C++中构造函数中dot <function name>的含义

如何解决《C++中构造函数中dot<functionname>的含义》经验,为你挑选了1个好方法。

我正在研究LLVM,发现了一段有趣的代码

  case ARM::BMOVPCRX_CALL: {
    EmitToStreamer(*OutStreamer, MCInstBuilder(ARM::MOVr)
      .addReg(ARM::LR)
      .addReg(ARM::PC)
      // Add predicate operands.
      .addImm(ARMCC::AL)
      .addReg(0)
      // Add 's' bit operand (always reg0 for this)
      .addReg(0));

    EmitToStreamer(*OutStreamer, MCInstBuilder(ARM::MOVr)
      .addReg(ARM::PC)
      .addReg(MI->getOperand(0).getReg())
      // Add predicate operands.
      .addImm(ARMCC::AL)
      .addReg(0)
      // Add 's' bit operand (always reg0 for this)
      .addReg(0));
    return;
  }

我的问题是关于.addReg.addImm.我不会说我是C++的新手,但我从未见过这种类型的代码.它是什么意思,它有什么作用?为什么有人想做这样的事情?



1> Ken Slade..:

这种编写软件的模式称为"方法链"或"命名参数习语".

例如,您可能有一个班级:

class Example {
    int a, b;

public:
    Example &a(int const a) {this->a = a; return *this;}
    Example &b(int const b) {this->b = b; return *this;}
};

int main(void) {
    Example example;
    example.a(5).b(6); //example.a is now 5, example.b is now 6
    return 0;
}

对于这个例子,应该注意的是,没有什么能阻止你调用example.b(6).a(5)以获得相同的结果.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有