我认为构造函数在C++中控制初始化和operator = functions控制赋值。那么为什么这个代码工作?C++中的赋值vs初始化
#include <iostream>
#include <cmath>
using namespace std;
class Deg {
public:
Deg() {}
Deg(int a) : d(a) {}
void operator()(double a)
{
cout << pow(a,d) << endl;
}
private:
int d;
};
int
main(int argc, char **argv)
{
Deg d = 2;
d(5);
d = 3; /* this shouldn't work, Deg doesn't have an operator= that takes an int */
d(5);
return 0;
}
在主功能的第三行,我分配一个int
到Deg
类的对象。由于我没有operator=(int)
函数,我认为这肯定会失败......但相反,它调用Deg(int a)
构造函数。那么构造函数也控制分配?
+1明确 – dimba 2010-02-20 18:10:29
至少有一家公司我已经在发生了规则制定“使用显式所有的构造函数,除非有充分的理由不在它的编码标准中。这有助于避免可能出现的令人费解的情况。 – Sean 2010-02-20 18:16:26
我想你的意思是在所有可以用一个参数调用的构造函数:)? – 2010-02-21 12:30:36