1

我不记得它叫什么了,但我知道我可以在 Java 中做到这一点。假设我有以下内容:

class Foo
{
public:
    Foo() {};
    void bar() {};
};

我想做这个:

int main() {
    (new Foo).bar();
}

但这似乎不起作用。有没有类似的方法可以做到这一点而不必这样做:

int main() {
    Foo foobar;
    foobar.bar();
}
4

3 回答 3

5

new动态分配内存并返回一个指针。类成员是使用间接运算符获得的->。我认为这不是您要寻找的东西,因为您冒着导致内存泄漏的风险。简单地调用 的构造函数就Foo可以让我们做我们想做的事:

Foo().bar();

通过调用 的构造函数Foo,我们创建了一个临时对象,我们可以从中获取它的数据成员。这比指针更可取,因为我们不必处理内存泄漏和指针删除。

于 2012-12-22T21:39:20.493 回答
4

你可以说(new Foo)->bar();。这行得通,但绝对是愚蠢的。正确的是:

int main()
{
    Foo x;
    x.bar(); 
}

或者,如果您不想要局部变量:Foo().bar();. 但现在这是有问题的,因为如果你不需要Foo有状态,那么你可能根本不需要一个类。只需创建bar一个免费函数(Java 中不存在的东西):

void bar();

int main()
{
    bar();
}
于 2012-12-22T21:38:21.990 回答
1

是的,Foo().bar();。无需new像在 Java 中那样使用。

于 2012-12-22T21:38:51.350 回答