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++ 中运算符重载的更多信息,请参阅此文档。
这就是关于点和箭头运算符的不同之处。
总结
在本文中,我们讨论了点运算符和箭头运算符的基础知识,并了解了它们的不同之处。 我们看到了箭头运算符如何成为括号和点运算符的扩展,以及它如何影响这两者的工作方式。
相关文章
Arduino 复位
发布时间:2024/03/13 浏览次数:315 分类:C++
-
可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。
Arduino 的字符转换为整型
发布时间:2024/03/13 浏览次数:181 分类:C++
-
可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。
Arduino 串口打印多个变量
发布时间:2024/03/13 浏览次数:381 分类:C++
-
可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。