C++ 中构造函数的返回类型
Return type of a constructor in c++
我正在学习 c++,我遇到了以下代码段:
class X
{
int i;
public:
X(int ii = 0);
void modify();
};
X::X(int ii)
{ i = ii; }
void X::modify()
{ i++; }
X f5()
{ return X(); }
const X f6()
{ return X(); }
void f7(X& x) // Pass by non-const reference
{ x.modify(); }
int main()
{
f5() = X(1);
f5().modify();
}
我特别被困在这个部分——
X f5()
{ return X(); }
这部分代码是否按值返回类型 x 的对象?构造函数可以返回对象吗?
这部分代码是否按值返回类型 x 的对象?
是的,它创建并值初始化类型为 X
的临时对象(通过调用默认值为零的构造函数)并返回该对象。
构造函数可以返回对象吗?
不,这没有任何意义。但是像X()
这样的转换表达式。
f5
只是函数,而不是构造函数。它返回类型为 X
的构造对象。
很简单,你误解了类和函数的构造函数。 你的类class X
有一个构造函数,它是X(int ii = 0);
的。
X f5()
不是构造函数。首先要清楚地了解这一点。
的构造函数应与类同名,并且没有返回值。这没有任何意义。(进一步阅读有关类和构造函数的信息)
X f5() {
return X();
}
这是一个返回X
类型的对象的函数。 它返回 X()。
X()
创建一个类型为 X
的值初始化临时对象。
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 基于类型作为参数的字符串表示形式具有不同返回类型的函数
- 具有不同返回类型的C++函数
- 如果我忽略返回类型shared_ptr函数的返回值怎么办
- C++ 如何将参数绑定到具有相同返回类型的函数,并将它们全部存储在一个容器中
- 如何在 c++ 中使用返回类型导出函数 std::map
- 初始化自定义类型构造函数的数组
- 返回不同返回类型的函数的函数指针的函数
- 调用C++具有复杂参数和复杂返回类型的函数 C 代码
- 按返回类型重载函数模板
- 具有变量返回类型的函数
- 为什么C++ std::min_element 库函数接受采用布尔返回类型的函数对象的函子,而不是像 C 中那样的 in
- OpenGL着色器错误C1068:类型构造函数中的数据过多
- 自动返回类型的函数可以返回同级对象
- 为什么不在这个具有自动返回类型的函数中省略复制?
- 返回类型布尔函数中的声明语法错误
- Lambda 闭包类型构造函数
- 仅当基础类型具有模板类型构造函数时,才实现这些构造函数
- 当我定义一个具有类(非引用)返回类型的函数时,调用类的默认构造函数或复制构造函数