指针在C ++中的代码中如何工作?

时间:2019-07-20 12:55:10

标签: c++ pointers

我正在阅读C ++中的一些代码,但我不明白我们如何获得程序的输出:

 1 1
 1 1
 1 1
 1 2

我知道这与用作函数变量的指针有关,但我没有得到它们。

#include <stdio.h>


class C
{
public:
  int m1 () {return 1;}
  virtual int m2 () {return 1;}
};

class D:public C {
  public:
  int m1 () {return 2;}
  int m2 () {return 2;}
};


void printCD (C c1, C c2)
{
  printf ("%d %d \n", c1.m1 (), c2.m2 ());
}

void printCD2 (C * c1, C * c2)
{
  printf ("%d %d \n", c1->m1 (), c2->m2 ());
}

void testCD ()
{
  C *c = new C ();
  D *d = new D ();
  printCD (*c, *c);
  printCD (*d, *d);
  printCD2 (c, c);
  printCD2 (d, d);
  delete c;
  delete d;
}

int
main ()
{
  testCD();

  return 0;
}

任何帮助将不胜感激。

0 个答案:

没有答案