#include<iostream>
using namespace std;
class Shape
{
public:
virtual print() const = 0;
};
class Point : public Shape
{
public:
virtual print() const { cout << "Point" << endl; }
};
class Circle : public Shape
{
public:
virtual print() const { cout << "Circle " << endl;}
};
int main()
{
Point p;
Circle c;
Shape& s = p;
s.print();
s = c;
s.print();
return 0;
}
为什么两次打印的都是"Point"(执行环境VC6.0)?
对于你们可能是小问题,但对于却是困扰我的大问题
如有哪位知道请指教,非常感谢!!!
回答:
当然都是打印"Point",引用只在定义阶段有效!不能改变指向其他位置,它与指针的区别就在此,并且没有给它在栈分配空间!不过没有报错比较奇怪!
using namespace std;
class Shape
{
public:
virtual print() const = 0;
};
class Point : public Shape
{
public:
virtual print() const { cout << "Point" << endl; }
};
class Circle : public Shape
{
public:
virtual print() const { cout << "Circle " << endl;}
};
int main()
{
Point p;
Circle c;
Shape& s = p;
s.print();
s = c;
s.print();
return 0;
}
为什么两次打印的都是"Point"(执行环境VC6.0)?
对于你们可能是小问题,但对于却是困扰我的大问题
如有哪位知道请指教,非常感谢!!!
回答:
当然都是打印"Point",引用只在定义阶段有效!不能改变指向其他位置,它与指针的区别就在此,并且没有给它在栈分配空间!不过没有报错比较奇怪!
C++ 引用与多态详解
1万+

被折叠的 条评论
为什么被折叠?



