-1

私は非常に興味深い質問に出くわしました...c++の次のコードセグメントのクラス宣言は何でしょうか。

int main(){    
    Point f(3,4);        //class Point    
    f(4);    
}

オブジェクト宣言は、コンストラクターf(int、int)を宣言することで実行できます。しかし、コンストラクター宣言を使用してオブジェクトに値を割り当てるにはどうすればよいですか?別のコンストラクターf(int)を定義しても、これは機能しません...コンストラクターはオブジェクト宣言中にのみ呼び出されるためです。これを行う方法を提案してください...。

4

3 に答える 3

3

代入演算子を使用できます。

Point f(3, 4);
f = Point(4);
于 2012-10-27T17:52:11.273 に答える
2
class Point
{
public:
    Point(int,int);
    void operator()(int);
};

もちろん、この場合はコンストラクタではありません。しかし、それがあなたが示した構文が合法である可能性がある方法です。

operator() についての詳細は次のとおりです:なぜ operator() をオーバーライドするのですか?

于 2012-10-27T17:42:56.667 に答える
0

C++ のコードの [上記] セグメントのクラス宣言とは..

明らかなクラス宣言にはoperator()(int). あまり明白でないクラス宣言は次のとおりです。

class Point {
typedef void (*FunPtr)(int);
public:
  Point(int, int) {}
  static void Fun(int) {}
  operator FunPtr() { return Fun; }
};
于 2012-10-27T17:59:22.923 に答える