只要是指针,就要符合指针的运算方式,不管你是不是类指针;
如果子类在继承了父类之后,没有增加属性,那么此时他们的步长一致,如果子类增加了属性那么子类的步长将大于父类。
eg:
1 #include<iostream>
2 using namespace std;
3
4 class Parent {
5 public:
6 Parent():a(100)
7 {
8 cout << "a:" << a << endl;
9 }
10 virtual void test()
11 {
12 cout << "test
";
13 }
14 private:
15 int a;
16
17 };
18 class Child1 : public Parent
19 {
20 public:
21 Child1() :Parent(),a(10)
22 {
23 cout << "a:" << a << endl;
24 }
25 void test()override
26 {
27 cout << "children test
";
28 }
29 private:
30 int a;
31 };
32
33
34 int main()
35 {
36 Child1 c1[] = { Child1(),Child1(),Child1()};
37
38 Child1 *c2;
39 Parent *p2;
40 c2 = c1;
41 p2 = c1;
42 c2++;
43 p2++;
44 c2->test();
45 p2->test();//这句话屏蔽,正常运行,放出来,代码运行出错。就是因为父类步长小,++之后访问
//子类的属性,当然出错
46 return 0;
47 }