#include<stdio.h>
#include"stdlib.h"
#include<iostream>
using namespace std;
//69
class A69
{
public:
int _a;
A69()
{
_a = 1;
}
A69(int i) : _a(i)
{
}
virtual void print() //想想,这个在编译的时候,就已经确定了要输出哪一个了,肯定是A的_a啊!
{
cout << _a << endl;
}
friend void f1(A69& a);
friend void f2(const A69& a);
friend void f3(A69 a);
friend void f4(const A69 a);
};
void f1(A69& a) //不能将参数 1 从“int”转换为“A69 &”
{
cout << a._a << endl;
}
void f2(const A69& a)
{
cout << a._a << endl;
}
void f3(A69 a)
{
cout << a._a << endl;
}
void f4(const A69 a)
{
cout << a._a << endl;
}
class B69:public A69
{
public:
int _a;
B69()
{
_a = 2;
}
};
int main()
{
B69 b;
A69 *a69 = &b;
cout << "数据成员:" << a69->_a << endl;
b.print();
cout << ((A69)b)._a << endl;
cout<< b._a << endl;
f1(b);
f2(b);
f3(b);
f4(b);
//f1(3); //不能将参数 1 从int转换为A69 &
f2(3);
f3(3);
f3(3);
}
结果:
数据成员:1
1
1
2
1
1
1
1
3
3
3
分析:print函数在编译的时候,就已经确定了要输出A的_a。