OOP C ++,虚函数和新运算符

时间:2012-07-27 21:05:01

标签: c++ oop pointers virtual-functions

我必须编写下面代码的定义。我不知道OOP Cpp的一些基础知识,我知道什么是*x&x,但这还不够......主要的事实是我无法理解行B* p = new D, m, *k;我无法理解{ {1}}和m代表。

*k

帮助,如果您可以解释这些代码的工作方式(以及为什么)。

谢谢你的时间。

4 个答案:

答案 0 :(得分:4)

一次声明多个变量。这基本上与:

相同
B *p = new D;
B  m;
B *k;

所以p是指向分配了new的D实例的指针。 m是类B的本地实例,k是指向B的指针,稍后指定为m

通过指针msgp在两个分配的对象上调用k函数。

请注意*分别适用于每个变量声明。所以B* a, b;没有声明两个指针,而是声明一个指针和一个本地对象。这就是为什么许多人更喜欢直接在变量名前面写*B *a, b使这更加明显。

答案 1 :(得分:3)

在C ++中,您可以在一个语句中声明多个变量。因此B* p = new D, m, *k;声明变量pmk。指针声明的*绑定到变量名称,因此它基本上与

相同
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;

注意:如果每次都需要*