我正在阅读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;
}
任何帮助将不胜感激。