数组在赋值时,如果数据类型不同,会进行自动类型转换,比如
int p[2];
p[0] = 1.2;//会自动转化为1,然后赋值给p[0]
以下是数组类的一个转换
//这种情况能发生多态调用
class parent;
parent* p[2]; //区别之处
class parent {
public:
virtual int Sum_Solution(int n)
{
return 0;
}
};
class child : public parent{
public:
virtual int Sum_Solution(int n) {
return n + p[!n]->Sum_Solution(n - 1);
}
};
class Solution {
public:
int Sum_Solution(int n) {
parent p1;
child c;
p[0] = &c;
p[1] = &p1;
//cout << (p[!n] == c) << endl;
return p[!n]->Sum_Solution(n);
}
};
int main() {
Solution s;
cout << s.Sum_Solution(3) << endl;
cout << s.Sum_Solution(5) << endl;
system("pause");
return 0;
}
//这种情况发现调用的parent里边的solution
//因为数组会进行自动类型转换
class parent {
public:
virtual int Sum_Solution(int n)
{
return 0;
}
};
parent p[2]; //区别之处
class child : public parent{
public:
virtual int Sum_Solution(int n) {
return n + p[!n].Sum_Solution(n - 1);
}
};
class Solution {
public:
int Sum_Solution(int n) {
parent p1;
child c;
p[0] = c;
p[1] = p1;
cout << p[0].Sum_Solution(1) << endl;
cout << p[1].Sum_Solution(1) << endl;
return p[!n].Sum_Solution(n);
}
};
int main() {
Solution s;
cout << s.Sum_Solution(3) << endl;
cout << s.Sum_Solution(5) << endl;
system("pause");
return 0;
}