我们可以有一个调用构造函数的语句,并且不执行任何操作吗?
基本上,我正在重载构造函数,并使用构造函数而不将其赋值给变量,就像我们通常那样。 (通常我们不会这样做,但我可能会在使用仿函数时看到这种情况。)
任何想法?....(我已将复制构造函数声明为私有,只是为了确保这不是导致问题的原因。)
class myClass
{
public:
myClass (int n, int x) { }
myClass (int n ) { }
private:
myClass (const myClass & t){} // copy constructor is private.....
};
int main()
{
int r = 5;
myClass A( r ); // OK (as per usual)
myClass ( r, r ); // OK
myClass ( 5 ); // OK
myClass ( r ); // not OK : error C2371: 'r' : redefinition; different basic types
// myClass B = myClass ( r ); // this would not work as copy constructor
// has been declared as private
return 0;
}
答案 0 :(得分:3)
由于C ++的解析规则,你必须用额外的括号说(myClass(r));
。
(你所说的是一个名为r
的新变量的声明,它已经存在。请注意,你也可以说int(r);
来声明r
。)
答案 1 :(得分:0)
myClass (r);
行实际上被解释为r
类型myClass
变量的定义(myClass r;
),已定义为int
。