如何使用c ++中的构造函数将值重新赋值给对象

时间:2012-10-27 17:40:50

标签: c++

我遇到了一个非常有趣的问题...... c ++中以下代码段的类声明是什么。

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

可以通过声明构造函数f(int,int)来完成对象声明。但是我们如何使用构造函数声明为对象赋值?即使定义了另一个构造函数f(int),这也行不通......因为构造函数只在对象声明期间被调用。请建议一种方法来做到这一点......

3 个答案:

答案 0 :(得分:2)

class Point
{
public:
    Point(int,int);
    void operator()(int);
};

当然,在这种情况下,它不是构造函数。但这就是你展示的语法是合法的。

以下是有关operator()的更多信息:Why override operator()?

答案 1 :(得分:2)

您可以使用赋值运算符:

Point f(3, 4);
f = Point(4);

答案 2 :(得分:0)

  
    

什么可以是c ++中[上面]代码段的类声明..

  

明显的类声明包括operator()(int)。下面是一个不太明显的类声明:

class Point {
typedef void (*FunPtr)(int);
public:
  Point(int, int) {}
  static void Fun(int) {}
  operator FunPtr() { return Fun; }
};