是否可以编写自己的条件语句或过载当前条件语句? (就像if short hand - ?
)
我做了一些研究但找不到任何东西。我想到的东西:
do
{
//Run Application
}if(...)//Only If variables are initialised
如果可以,我将如何在c ++中这样做?
答案 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)