* 与 class 有什么关系?
What does the * do with that class?
这可能是一个 "dumb" 问题,但我不知道 * 在该代码中做了什么。
ClassA* classa;
类是一个 class,那么 * 实际上对 class 做了什么?以及这个?操作员?叫什么?
指针声明。
在这个声明之后,classa
是一个类型为"Pointer-to-a-ClassA object"的变量。它可以指向任何 ClassA
对象,或任何继承自 ClassA
的对象
*
不对 class 做任何事情,它通过使它成为指针来改变声明变量的类型:
ClassA *classa; // classa is a pointer to ClassA
可以添加多个星号,使指针指向指针,指针指向指针,等等:
ClassA **classa; // classa is a pointer to pointer to ClassA
ClassA ***classa; // classa is a pointer to pointer to pointer to ClassA
请注意,当表达式(与声明相对)中使用相同的星号时,它 "reduces" 指针的级别,因此
ClassA *classa;
foo(*classa); // Dereferences the pointer, producing ClassA
这可能是一个 "dumb" 问题,但我不知道 * 在该代码中做了什么。
ClassA* classa;
类是一个 class,那么 * 实际上对 class 做了什么?以及这个?操作员?叫什么?
指针声明。
在这个声明之后,classa
是一个类型为"Pointer-to-a-ClassA object"的变量。它可以指向任何 ClassA
对象,或任何继承自 ClassA
*
不对 class 做任何事情,它通过使它成为指针来改变声明变量的类型:
ClassA *classa; // classa is a pointer to ClassA
可以添加多个星号,使指针指向指针,指针指向指针,等等:
ClassA **classa; // classa is a pointer to pointer to ClassA
ClassA ***classa; // classa is a pointer to pointer to pointer to ClassA
请注意,当表达式(与声明相对)中使用相同的星号时,它 "reduces" 指针的级别,因此
ClassA *classa;
foo(*classa); // Dereferences the pointer, producing ClassA