自定义条件语句?这可能吗?

时间:2012-06-11 13:00:16

标签: c++ conditional overloading

是否可以编写自己的条件语句或过载当前条件语句? (就像if short hand - ?

我做了一些研究但找不到任何东西。我想到的东西:

do
{
   //Run Application
}if(...)//Only If variables are initialised

如果可以,我将如何在c ++中这样做?

4 个答案:

答案 0 :(得分:3)

do
{
   //Run Application
}if(...)//Only If variables are initialised

会转换为

if ( condition )
{
   //run application
}

那么为什么不这样做呢?

无法创建新的运算符,并且无法重载三元运算符?:

你可能会混淆预处理器,但你最终会得到的代码不如使用常规if那么清晰。

#define RUNIF(condition, statement) \
if ( condition ) \
{                \
   statement();  \
}

并称之为:

RUNIF(condition, RunApplication())

但就个人而言,我不想在生产代码中看到这一点。

答案 1 :(得分:2)

在纯C ++中,您只能重载现有的运算符,而不能创建新的运算符。

也就是说,没有什么能阻止你使用预处理器你的自定义预处理器(就像Qt那样)。

答案 2 :(得分:1)

您可以找到可重载运算符here的列表。因此,您可以重载&&||等条件(虽然不推荐),但不能?:

do / while / if等其他关键字不可重载,因此无法编写

do {
  ...
} if()

以编译方式(没有预处理器宏)

但你可以这样做:

if(...) {
  while(true) {
    ...
  }
}

注意:没有重载,只是简单的代码重组

答案 3 :(得分:0)

在您放置if()的位置,您可以使用while并应用其条件 - 就像在普通if中一样,例如:

do
{
   Object x = getObject(); 
}while(x != null && x.getVal() > 12)