Access Violation

terça-feira, janeiro 17, 2006

O que esta errado com este código (parte II)
Este é um pouco mais difícil de entender apenas olhando o código. Para facilitar adianto que o programa deveria imprimir o seguinte:
- N: 1 J: 7
- N: 3 J: 5
- N: 5 J: 3
- N: 7 J: 1

Compile o programa e teste :) (tanto o VC6 quanto o VC7 geram o mesmo resultado)


0: #include <iostream>
1:
2: class base
3: {
4: public:
5: base(int i) : n(i)
6: {
7: }
8:
9: virtual void print()
10: {
11: std::cout << "N: " << n << " ";
12: }
13:
14: private:
15: int n;
16: };
17:
18: class derived : public base
19: {
20: public:
21: derived(int x, int y) : base(x), j(y), t(0)
22: {
23: }
24:
25: virtual void print()
26: {
27: base::print();
28: std::cout << "J: " << j << std::endl;
29: }
30:
31: private:
32: int j;
33: int t;
34: };
35:
36: void printIt(base a[], int n)
37: {
38: for (int i=0; i < n; i += 2)
39: {
40: a[i].print();
41: }
42: }
43:
44: void main()
45: {
46: derived d[] = {
47: derived(1,7),
48: derived(2,6),
49: derived(3,5),
50: derived(4,4),
51: derived(5,3),
52: derived(6,2),
53: derived(7,1)
54: };
55:
56:
57: printIt(d, sizeof(d) / sizeof(d[0]));
58: }

[+/-] mostrar/esconder este post