在c ++ std11中是否有相当于Python的`pass`?

Tom*_*mmy 21 c++ python

我想要一个不做任何事情的声明,但可以在需要声明的地方使用.通过:http://docs.python.org/release/2.5.2/ref/pass.html

编辑:刚刚看到:如何在C/C++中执行no-op?

#define pass (void)0
Run Code Online (Sandbox Code Playgroud)

解决了我的问题.谢谢!

Pra*_*mar 29

分号或空括号应该适合你

例如Python的

while some_condition():    # presumably one that eventually turns false
    pass
Run Code Online (Sandbox Code Playgroud)

可以转换为以下C++

while (/* some condition */)
    ;
Run Code Online (Sandbox Code Playgroud)

要么

while (/* some condition */) {}
Run Code Online (Sandbox Code Playgroud)

也许对于三元运算符案例,您可以这样做:

x > y ? do_something() : true;
Run Code Online (Sandbox Code Playgroud)

  • @Tommy - FWIW,`pass`在python条件表达式中不起作用...`1如果为True则传递`无效. (6认同)
  • 作为参考,第一个称为空语句。 (2认同)

Naw*_*waz 9

不,您没有pass或等效的关键字.但您可以编写没有任何此类关键字的等效代码.

def f():
   pass
Run Code Online (Sandbox Code Playgroud)

void f() {}
Run Code Online (Sandbox Code Playgroud)

 class C:
     pass
Run Code Online (Sandbox Code Playgroud)

 class C {};
Run Code Online (Sandbox Code Playgroud)

在不同的上下文中,不同的语法可能有用.例如,

 class MyError(Exception):
        pass
Run Code Online (Sandbox Code Playgroud)

class MyError : public std::exception
{
      using std::exception::exception; //inherits constructor!
};
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在此上下文中,您必须编写using以从基类继承构造函数.在Python pass中,在类似的上下文中做类似的事情.

希望有所帮助.


Lig*_*ica 5

正如评论中所述,这是不支持的,因为它没有意义。条件运算符旨在评估两个操作数之一。二。不是一个。

仅在其中一种情况下滥用运算符执行某些有条件的操作是不行的。事实上,最好两个操作数都没有任何副作用。这不是“做某事”的构造,而是“给我两件事之一”的构造。

在这方面,如果 Python 支持你说它支持的东西,那么C++ 不支持的地方就会被破坏。碰巧的是,Python 实际上也不支持它,毕竟。

写一个if声明,而不是:

if (x > y) {
   do_something();
}
else {
   /* Unimplemented at the moment */
}
Run Code Online (Sandbox Code Playgroud)

  • 简而言之,预期的语义是不同的。`if`/`else` 块传达了在两个 *actions* 之间进行选择的意图,其中条件运算符传达了在两个 *values* 之间进行选择的意图。这就是条件运算符返回一个值而 `if`/`else` 块不返回的原因。 (3认同)