[英]Constructor syntax in return statement?
我理解以下代码的所有内容,除了这一行
A f(){return A(i);}
具体来说,我不懂语法A(i)
。 我知道它返回类型A
的值,但括号中的i
是什么意思?
它是一个带有变量的构造函数调用吗?
#include <iostream>
using namespace ::std;
class A{
public:
int j;
A(int z){j = z;}
int g(){return j;}
int operator+(A a){return a.j + j;}
};
class B{
public:
int i;
B(A a){i = a.j;}
A f(){return A(i);} // ???
A operator-(){return A(i);}
};
int main(){
A a(1);
B b = a;
a.j = b.f() + a;
b.i = a.g();
a = -b;
return 0;
}
A(i)
是功能性演员表达。 它正在从i
创建一个临时对象A
该过程将调用适当的A
构造函数。
在C ++中,程序员无法“调用构造函数”。 程序员所做的是在各种地方创建对象,并自动安排构造。 功能强制转换表达式是创建对象的一种方式。
请注意,虽然这是正式的“创建临时”,但复制省略(返回值优化)实际上会使其直接初始化返回值。
它创建一个A,调用构造函数A(int z)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.