我遇到了一个非常有趣的问题...... c ++中以下代码段的类声明是什么。
int main(){
Point f(3,4); //class Point
f(4);
}
可以通过声明构造函数f(int,int)来完成对象声明。但是我们如何使用构造函数声明为对象赋值?即使定义了另一个构造函数f(int),这也行不通......因为构造函数只在对象声明期间被调用。请建议一种方法来做到这一点......
答案 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; }
};