C++:智能指针和带引用的流畅设计模式

C++: Smart Pointers & Fluent Design Pattern with References

我一生都被高级语言宠坏了,现在我正在尝试学习 C++。

我想将 fluent design pattern 与 class 一起使用,但我担心我在某处犯了错误并牺牲了性能。

说我有一个classBuilder,它有一些成员属性和方法。它的所有方法看起来都像这样:

Builder &doSomething(SomeTypeThatCouldBeAClassOrAPrimitive &thing)
{
    // do stuff, such as
    // modify a class member
    memberThing = "something";
    
    return *thing;
} 

并说我是这样使用它的:

unique_ptr<Builder> builder(new Builder());

builder->doSomething(someVal)
        .doAnotherThing(someOtherVal)
        .doAFinalThing(someOtherOtherVal);

仅从提供的代码来看,我做错了什么,还是可以更有效地完成某些事情?

如果我需要提供更多信息,请告诉我。

这里没有错误,但也不需要在堆上分配Builder对象。考虑一下:

Builder builder;

builder.doSomething(someVal)
       .doAnotherThing(someOtherVal)
       .doAFinalThing(someOtherOtherVal);

您甚至可以使用临时 Builder 并完全删除变量:

Builder{}.doSomething(someVal)
         .doAnotherThing(someOtherVal)
         .doAFinalThing(someOtherOtherVal);