一段C++代码,可能颠覆你已有的概念
2009-02-02 18:15
344 查看
一段C++代码,可能颠覆你已有的概念
class AD
{
public:
AD() {}
virtual ~AD() {}
void fun()
{
cout << "AD::fun()"<< endl;
}
};
class BD : public AD
{
private:
int i;
public:
BD() { i = 0; }
void fun()
{
i = 1;
cout << "BD::fun()" << endl;
}
};
class CD : public AD
{
public:
CD() {}
void fun2()
{
cout << "CD::fun2()" << endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
//TestTemp<float, float, int> test;
BD* pBD = new BD();
AD* pAD = dynamic_cast<AD*>(pBD);
CD* pCD = dynamic_cast<CD*>(pAD);
//pBD->fun();
pCD->fun2();
//BD* pBD2 = 0;
//pBD2->fun();
return 0;
}
pCD为空,但是依旧可以输出,调用fun2函数。
class AD
{
public:
AD() {}
virtual ~AD() {}
void fun()
{
cout << "AD::fun()"<< endl;
}
};
class BD : public AD
{
private:
int i;
public:
BD() { i = 0; }
void fun()
{
i = 1;
cout << "BD::fun()" << endl;
}
};
class CD : public AD
{
public:
CD() {}
void fun2()
{
cout << "CD::fun2()" << endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
//TestTemp<float, float, int> test;
BD* pBD = new BD();
AD* pAD = dynamic_cast<AD*>(pBD);
CD* pCD = dynamic_cast<CD*>(pAD);
//pBD->fun();
pCD->fun2();
//BD* pBD2 = 0;
//pBD2->fun();
return 0;
}
pCD为空,但是依旧可以输出,调用fun2函数。
相关文章推荐
- 用一段代码实现一个链表倒序(C++实现)
- 从一段代码读懂C/C++变量作用域
- 一段C++练习代码小评(1)
- 非常不错的一段C++代码
- 一段代码对C++的理解
- 一段可能价值几百万的代码
- [C++基础]036_一段关于指针的误操作代码
- 加载exe的PE信息并输出相关PE信息的一段c++代码
- C++測量一段代码的执行时时间
- 同一段C++代码在win下和linux下同时编译时产生的头文件包含问题及解决
- 一段代码讲述C++继承、多态、友元、静态变量、重载
- atexit(在main函数执行完毕后,是否可能再执行一段代码?)
- 一段代码引起的对C++构造函数、析构函数,复制构造函数,运算符重载的深度理解
- 开源的c/c++编译器 mingm 编译、执行一段简单的c/c++代码
- 一段c++代码小例子
- 一段c++输入格式解析代码
- 一段使用C++的奇怪代码
- 一个问题 - 当你写一段代码时,你是否会考虑这份代码可能面临的各种执行环境
- 用c++编写一段完整代码,要求判断一个进程(例如qq.exe)是否存在,若存在,输出存在,不存在就输出不存在。
- 一段有趣的C++代码 -C++和JAVA其实是一样的