0

独自の条件ステートメントを記述したり、現在のステートメントをオーバーロードしたりすることは可能ですか?(速記の場合のように- ?

調べてみましたが、何も見つかりません。私が心に留めていること:

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

これが可能である場合、C ++でそれを行うにはどうすればよいですか?

4

4 に答える 4

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())

しかし、個人的には、これを本番コードで見たくありません。

于 2012-06-11T13:07:29.400 に答える
2

純粋なC++では、既存の演算子をオーバーロードすることしかできず、新しい演算子を作成することはできません。

とはいえ、プリプロセッサまたはカスタムプリプロセッサ(Qtのように)で遊ぶことを妨げるものは何もありません。

于 2012-06-11T13:03:22.253 に答える
1

オーバーロード可能な演算子のリストはここにあります。&&したがって、and ||(推奨されていませんが)のような条件をオーバーロードすることはできますが、?:

do//のような他のキーワードはオーバーロードできないので、書くことはできませwhileif

do {
  ...
} if()

コンパイルする方法で(プリプロセッサマクロなし)

しかし、あなたはすることができます:

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

注:オーバーロードは発生せず、コードを単純に再編成するだけです

于 2012-06-11T13:06:25.263 に答える
0

あなたが置いた場所であなたif()は使用することができ、whileそしてまたそこに条件を適用することができました-ちょうど普通のようifに、例えば:

do
{
   Object x = getObject(); 
}while(x != null && x.getVal() > 12)
于 2012-06-11T13:06:16.507 に答える