1

次のコードの意味がわかりません、助けてください、ありがとう。

次のコードでは:

FrameDetect::Point FrameDetect::tracer(LabelData *ldata, int x, int y, int &pos, int lbl)
{
    for (int i=7; i>=0; i--)
    {
        int tx(x);
        int ty(y);
        nextPoint(tx, ty, pos);
        if (tx>0 && ty>0 && tx < bimg->width() && ty < bimg->height())
        {
            const int &l( ldata->at(tx, ty) );
            if (bimg->at(tx, ty) == ccolor && (l == 0 || l == lbl))
            {
                return Point(tx, ty);
            }
            if (bimg->at(tx, ty) == bcolor)
            {
                ldata->at(tx, ty) = -1;
            }
        }
        pos = (pos + 1)%8;
    }
    return Point(-1, -1);
}

int tx(x);関数呼び出しか変数宣言か?ご協力いただきありがとうございます。

ソース

4

5 に答える 5

2

と同じ

int tx = x;

「int コンストラクター」

于 2013-07-18T10:46:51.603 に答える
2

intという名前の型変数を宣言することを意味しますtxtx(x)初期化するコンストラクタを呼び出します。txその値はxです。コードは次のようにも記述できます。

int tx = x;
于 2013-07-18T10:59:01.657 に答える
2

It is a variable declaration. It can't be parsed as a function declaration, because an expression in parenthesis does not name a type.
It can't be a function call either - the syntax is invalid. You can't write

double sin(2);
于 2013-07-18T11:20:04.563 に答える
1

コピーコンストラクタです。C++ では、パラメーターなしで変数を宣言すると混乱が生じます。その状況では、括弧を省略します

いくつかの例を紹介します。

void afunction_thatDoesNothing(int x)
{
   int aFuncDecl(); //1: 関数宣言
   int aVariable; //2: int のデフォルトの構築
   int aValue1 = x; //3: x で構築
   int aValue2(x); //4: x で構築
   int aFuncDecl2(int); //5: int を取る関数の宣言
}

宣言と初期化のあいまいさが存在する上記の唯一のケースはケース 1 です。コードでは、コンストラクターに値型式を指定しました (ケース 4)。宣言として誤って解釈されることはありません。

于 2013-07-18T11:53:33.557 に答える
0

int tx(x); 説明。

int x(5); 変数 x. そして、作成時に変数を初期化しています。

int x = 5;// このステートメントでは、変数 x に 5 を割り当てています。この場合、x は既に宣言されています。その値を更新します。

于 2013-09-28T21:04:22.687 に答える