有人可以帮我理解以下语法:
aaa<bbb> object_name;
func(object_name, object_name2);
ccc<ddd>(object_name) = func2(arg1, arg2);
Run Code Online (Sandbox Code Playgroud)
我知道在第一个我们声明一个新的aaa<bbb>类对象.然后我们将这个对象与另一个一起使用来调用一个函数,这可能会改变它的值object_name.我很难理解第三行.特别是=标志左侧的结构.为什么object_name在括号中?对我而言,我们称之为函数.但是,我们可以在=标志的左侧和右侧调用一个函数吗?
函数调用可以返回左值,这是一种可以合理地出现在赋值表达式左侧的类型.在这种情况下,通常的左值类别是参考 ; 例如,vector<T>::front返回类型的引用T &:
std::vector<int> v{0, 1, 2, 3};
v.front() = 99;
// v is now {99, 1, 2, 3}
Run Code Online (Sandbox Code Playgroud)
仅限高级用法:函数还可以使用重载赋值运算符返回对象类型的prvalue,以使赋值表达式具有一些适当的效果; 但是,除少数情况外,标准库不会使用此功能ostream_iterator.
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |