我是一名自学成才的程序员,第一次参加正式的大学程序设计课程.今天有人问C++课程的讲师->
操作员做了什么.
教官说,沿着"箭头操作线的东西,除了用于动态分配的对象点运算符是等效的.你只能使用在静态分配对象点运算符[随后声明变量的一个例子,在一个块的开始],你只能使用箭头操作符动态分配你制作的对象new
."
C++绝对不是我的专业领域......但是我所看到的所有其他事情a->b
都完全相同*a.b
,并且它主要是出于遗留原因而存在,因为变量在早期版本的C++中的工作方式不同.
是否真的->
不能用于指向堆栈上分配的对象的指针,并且.
不能用于指向堆上分配的对象的解引用指针?
你的教师的答案是不正确的,它概括了一些常见的基本案例,但它也表明他或她没有任何用C++编写大型项目的经验.原因如下:
如果在堆栈上分配对象,即使用C++的自动内存,通常会执行以下操作:
SomeClass object;
object.doSomething();
Run Code Online (Sandbox Code Playgroud)
如果在堆上分配内存,它通常如下所示:
SomeClass* object = new SomeClass; // unique_ptrs are a better way but this might be easier to grab for now
object->doSomething();
delete object;
Run Code Online (Sandbox Code Playgroud)
但是您也可以通过引用引用对象,以便.
再次工作.并且您可能有一个指针指向object
已在堆栈或堆上分配的指针,从而可以通过->
工作进行访问.
总而言之,.
它用于访问非指针并->
用于访问指针.此外,可能存在operator->
重载的类.然后,您还可以使用该运算符访问类的非指针实例.
归档时间: |
|
查看次数: |
73 次 |
最近记录: |