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);
我一生都被高级语言宠坏了,现在我正在尝试学习 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);