我遇到了一个非常有趣的问题...... c++ 中以下代码段的类声明可能是什么......
int main(){
Point f(3,4); //class Point
f(4);
}
对象声明可以通过声明构造函数 f(int, int) 来完成。但是我们如何使用构造函数声明来为对象赋值呢?即使定义另一个构造函数 f(int),这也不起作用……因为构造函数仅在对象声明期间被调用。请提出一种方法来做到这一点......
我遇到了一个非常有趣的问题...... c++ 中以下代码段的类声明可能是什么......
int main(){
Point f(3,4); //class Point
f(4);
}
对象声明可以通过声明构造函数 f(int, int) 来完成。但是我们如何使用构造函数声明来为对象赋值呢?即使定义另一个构造函数 f(int),这也不起作用……因为构造函数仅在对象声明期间被调用。请提出一种方法来做到这一点......
您可以使用赋值运算符:
Point f(3, 4);
f = Point(4);
class Point
{
public:
Point(int,int);
void operator()(int);
};
当然,在这种情况下,它不是构造函数。但这就是您展示的语法合法的方式。
以下是有关 operator() 的更多信息:为什么要覆盖 operator()?
c++ 中 [above] 代码段的类声明可以是什么..
明显的类声明包括operator()(int)
. 一个不太明显的类声明如下:
class Point {
typedef void (*FunPtr)(int);
public:
Point(int, int) {}
static void Fun(int) {}
operator FunPtr() { return Fun; }
};