c++入门+这个指针的例子
C++ Primer Plus this pointer example
很抱歉在这里问这么一个基本的问题,但是有人能快速地为我澄清一下吗?然后我将删除线程,以免造成混乱。
在下面的c++ Primer Plus文本示例中,&操作符在函数声明指定该函数返回一个指针到股票对象?那么,为什么函数继续按值返回s和this对象呢?
"……然而,你想要返回的不是this,因为这是对象的地址。你想返回对象本身,用*this表示。(回想一下,对指针应用解引用操作符*将产生指针所指向的值。)现在可以通过使用*this作为调用对象的别名来完成方法定义。"
const Stock & Stock::topval(const Stock & s) const {
if (s.total_val > total_val)
return s; // argument object
else
return *this; // invoking object
}
是的,这很令人困惑。c++大量重载每个符号,因为键盘上没有足够的符号。
符号&
用于表示两个不同的意思,它们在概念上是相似的,但实际上是完全不同的语言特征。
含义1: 引用类型声明。向类型A追加一个&符号,表示对类型A的引用。例子:
Stock x;
Stock& s = x; // now s is a reference to x
含义2:操作符地址。一元操作符,返回指向其实参的指针。例子:
Stock x;
Stock* s = &x; // now s a pointer to x
提示:引用和指针是完全一样的东西,除了它们有不同的语法,引用永远不能为空,你不能有一个引用到一个引用。
不要删除这个帖子,我们喜欢书呆子。
const Stock &
表示返回对对象的const引用。指向对象的指针是const Stock *
。不要把两者混在一起!因此this指针被解引用并返回
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- C++ 入门加列表:10.9 "顶部"指针问题
- c++入门+这个指针的例子