C++ 中的箭头运算符与点运算符
要访问 C++ 中的类成员,我们使用点运算符和箭头运算符。 但这并不意味着它们是相同的。
这两个运算符之间存在一些差异,我们将在本文中讨论。 在本文中,类、联合和结构类型都被视为类类型。
要了解点运算符与箭头运算符的不同之处,让我们首先了解这两个运算符的基础知识。
C++ 中的点 (.) 运算符
C++ 中的点 (.) 运算符也称为类成员访问运算符,有助于访问任何给定类的公共成员。 在这里,公共成员只不过是类的变量和方法。
句法:
name_of_object.name_of_member;
让我们看一个例子,看看点运算符是如何工作的。
在以下示例中,desserts 类具有一个私有数据成员 cakes、两个公共成员函数 init() 和 display() 以及一个公共数据成员 Chocolates。
现在,我们可以使用点运算符来访问某些变量和函数并向变量赋值。 请注意,在 main() 函数内部,我们在以下位置使用点运算符:
- 要通过公共成员函数 init() 将值 100 分配给私有数据成员。
- 将值 200 分配给公共数据成员 Chocolates。
- 要访问公共成员函数,display()。
示例代码:
#include <iostream>
using namespace std;
class desserts
{
private:
int cakes;
public:
int chocolates;
void init(int cakes)
{this->cakes = cakes;}
void display()
{cout<<"Number of cakes: "<<cakes<<endl;}
};
int main()
{
//object declaration
desserts q;
//assign the values
q.init(100);
q.chocolates=200;
//print the values
q.display();
cout<<"Number of chocolates: "<<q.chocolates<<endl;
return 0;
}
输出:
Number of cakes: 100
Number of chocolates: 200
这就是我们在 C++ 中使用点运算符的方式。 现在,让我们看看箭头运算符是如何工作的。
C++ 中的箭头 (->) 运算符
要访问结构体或联合体的元素,我们在 C++ 中使用箭头运算符 (->
)。 箭头运算符使用指向结构或联合的指针变量。
句法:
(name_of_pointer)->(name_of_variable)
让我们看一个例子,看看箭头运算符是如何工作的。 请记住,它既适用于结构,也适用于联合。
在此示例中,我们在结构中使用箭头运算符。 这里,结构甜点有两个成员,风味和数量。
该结构有一个称为 items 的对象。 然后,在主块内,我们使用箭头运算符将值 2 分配给变量 number。
此外,我们使用箭头运算符来访问和打印变量数值。 这本质上就是箭头运算符处理结构的方式。
示例代码:
#include <iostream>
using namespace std;
struct desserts{
char flavor[50];
int number;
};
// Create the object of the structure
struct desserts* item = NULL;
int main()
{
item = (struct desserts*)
malloc(sizeof(struct desserts));
//use arrow operator to assign value
item->number = 2;
cout <<"The number of items: "<< item->number;
return 0;
}
输出:
The number of items: 2
让我们看另一个在联合中使用箭头运算符的示例。 在这里,联合甜品有两个成员,口味和数量。
该联合有一个名为 items 的对象。 然后,在主块内,我们使用箭头运算符为变量 number 赋值。
此外,我们使用箭头运算符来访问和打印变量数值。 请注意,联合中的箭头运算符的工作方式与结构中的相同。
示例代码:
#include <iostream>
using namespace std;
// union
union desserts {
char flavor[50];
int number;
};
union desserts* item = NULL;
int main()
{
item = (union desserts*)
malloc(sizeof(union desserts));
item->number = 5;
cout <<"The number of items:"<< item->number;
}
输出:
The number of items: 5
C++ 中的箭头运算符与点运算符
现在我们已经介绍了 C++ 中点和箭头运算符的基础知识,是时候更深入地了解它们并了解它们的差异了。 以下是您需要了解的点运算符和箭头运算符之间的所有差异的列表:
点 (.
) 运算符直接访问类的元素,而箭头 (->
) 运算符则使用指针来执行此操作。 这是直接访问元素的样子:
object_name.element
另一方面,要使用指针访问元素,我们这样做:
ypointer->element
这意味着点 (.
) 运算符用于对象,而箭头运算符用于指向对象的指针。 让我们举个例子来更好地理解这一点。
假设我们有一个对象 Demo,我们想调用它的方法之一 test()
。 为此,我们将使用点 (.) 运算符,如下所示:
Demo.test()
如果我们改用箭头运算符,则意思就不一样了。 这里,下面的代码将调用指针 Demo 所指向的对象上的 test()
方法,而不是对对象 Demo 进行调用。
这是因为箭头运算符首先取消引用指针,以便我们可以转到它所指向的对象。
Demo->test
我们不能将点 (.
) 运算符应用于指针,这与箭头 (->) 运算符不同。 请注意,(*p).element
相当于 p->element
。
使用 (*p).element
内的括号是因为点 (.) 运算符的优先级高于 *
。 因此,为了首先评估 *
,我们使用括号。
然而,简化这一过程的最佳方法是将整个部分 - (*p)
替换为像 p-> 这样的指针,这样就不会混淆优先级。
在 C++ 中,我们不能重载点 (.) 运算符,但可以重载箭头 (->
) 运算符。 要了解有关 C++ 中运算符重载的更多信息,请参阅此文档。
这就是关于点和箭头运算符的不同之处。
总结
在本文中,我们讨论了点运算符和箭头运算符的基础知识,并了解了它们的不同之处。 我们看到了箭头运算符如何成为括号和点运算符的扩展,以及它如何影响这两者的工作方式。
相关文章
在 C++ 中重载括号运算符
发布时间:2023/08/26 浏览次数:103 分类:C++
-
这个简单的编程指南将括号 ([]) 运算符重载为类对象的 getter 和 setter。首先,我们简单介绍一下运算符重载。C++ 中的运算符重载
C++ 中的一元否定运算符
发布时间:2023/08/26 浏览次数:135 分类:C++
-
一元减号运算符用于对数字取负,当它在变量之前使用时,它会对其值取负。一元减号运算符表示 C++ 中的前缀 - 符号。 必须在数字前加上 - 号才能将其取反;
在 C++ 中实例化模板类
发布时间:2023/08/26 浏览次数:186 分类:C++
-
模板类用于创建共享相同实现的新类。 它们主要用于创建提供特定类型的通用实现的抽象基类。模板类是通过为所有模板类方法指定数据类型和参数来实例化的。 然后,实例化的类可以用作程
在 C++ 中删除文件
发布时间:2023/08/26 浏览次数:102 分类:C++
-
文件中的数据不像集成开发环境 (IDE) 中计算机程序生成的输出那样易失。 但是,它是永久性的,用户可以长期检索和使用它。我们可以在 C++ 中执行的文件处理操作包括读取、创建、写入、更
C++ 中的多个代码文件
发布时间:2023/08/26 浏览次数:137 分类:C++
-
本文是关于在单个 C++ 程序中使用多个文件。 对于较大且冗长的项目来说,将所有代码写入一个文件中会变得很麻烦,因此我们将学习如何分离项目中的文件并使其更易于管理且易于重构。
在 C++ 中读取和写入文件位
发布时间:2023/08/25 浏览次数:156 分类:C++
-
在 C++ 中,诸如文本文件压缩之类的过程需要读取文件中的位并将其写入文件中。 在本文中,您将学习如何在 C++ 中毫无错误地读取或写入文件位。
在 C++ 中获取文件扩展名
发布时间:2023/08/25 浏览次数:66 分类:C++
-
文件扩展名是指文件名的最后部分,其中包含有关文件中保存的数据的信息。在 C++ 中,我们可以对包含 C++ 代码的文件使用 .cpp 或 .cxx 扩展名。
检查 MAC 上的 GCC 版本
发布时间:2023/08/25 浏览次数:108 分类:C++
-
GCC 编译器是一种将计算机程序的源代码转换为另一种语言(例如汇编语言或机器代码)的程序。检查 MAC 上的 GCC 版本
用 C++ 计算运行中位数
发布时间:2023/08/25 浏览次数:153 分类:C++
-
这是有关如何有效计算运行中位数的文章。 我们将从运行中位数的详细描述开始,然后是算法和一些实现注意事项。运行中位数