我必须编写下面代码的定义。我不知道OOP Cpp的一些基础知识,我知道什么是*x
或&x
,但这还不够......主要的事实是我无法理解行B* p = new D, m, *k;
我无法理解{ {1}}和m
代表。
*k
帮助,如果您可以解释这些代码的工作方式(以及为什么)。
谢谢你的时间。
答案 0 :(得分:4)
一次声明多个变量。这基本上与:
相同B *p = new D;
B m;
B *k;
所以p
是指向分配了new的D
实例的指针。 m
是类B
的本地实例,k
是指向B
的指针,稍后指定为m
。
通过指针msg
和p
在两个分配的对象上调用k
函数。
请注意*
分别适用于每个变量声明。所以B* a, b;
没有声明两个指针,而是声明一个指针和一个本地对象。这就是为什么许多人更喜欢直接在变量名前面写*
:B *a, b
使这更加明显。
答案 1 :(得分:3)
在C ++中,您可以在一个语句中声明多个变量。因此B* p = new D, m, *k;
声明变量p
,m
和k
。指针声明的*
绑定到变量名称,因此它基本上与
B* p = new D;
B m;
B* k;
答案 2 :(得分:0)
没什么特别的,只是老了C.
B* p = new D, m, *k;
只是以下的快捷方式:
B* p = new D;
B m;
B* k;
答案 3 :(得分:0)
p
是指向B类对象的指针(或D,因为它是B类的子对象)。 p->msg();
与(*p).msg();
类似。 m
是B类的对象,因此我们可以通过&
运算符获取指向它的指针,并将其存储在k
(这是指向B类对象的指针)中。
和
B* p = new D, m, *k;
只是
B* p = new D;
B m;
B* k;
注意:如果每次都需要*