-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++ 中 [above] 代码段的类声明可以是什么..

明显的类声明包括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 回答