从新创建的对象指针正确调用方法

Correctly Call a Method From Newly Created Object Pointer

本文关键字:指针 调用 方法 对象 新创建 创建      更新时间:2023-10-16

我是一名Java程序员,正在上C++课。我可以在堆栈上成功创建我的对象,而无需使用"new"关键字。

SeatSelection premium(1,5);
premium.toString();

该代码正确运行我的 toString() 方法。

我还尝试使用"new"关键字创建一个新的C++对象,然后尝试运行toString()方法。

SeatSelection *premium = new SeatSelection(1,5);

我不知道调用我的 toString() 方法的正确语法。

我试过什么

premium.toString();     //doesn't compile, premium is of non-class type "SeatSelection*"

使用对象指针调用方法的语法是什么?

使用运算符 ->.(点)一起,它是所谓的类成员访问运算符。

例如

SeatSelection *premium = new SeatSelection(1,5);
premium->toString();

或者你可以写

SeatSelection *premium = new SeatSelection(1,5);
( *premium ).toString();

根据C++标准

表达式 E1->E2 转换为等效形式 (*(E1))。E2;

C++无论何时使用new,您都会在堆上创建一个对象并获取指向该对象的指针作为回报。

在C++有两种方法可以尊重指针。

1)使用星号如(*premium),然后使用点运算符调用该类上的函数(即 (*premium).toString(); )。

2)按照其他示例中的建议使用箭头->运算符,它一举合并了星号和点的功能,并"看起来更漂亮"(即 premium->toString();)。

别忘了 C++不像Java那样被垃圾回收,所以当你new一个类时,你必须有一个匹配的delete,否则你会出血记忆。