您的位置:首页 > 编程语言 > C语言/C++

《笔记》孙鑫老师MFC第二讲(C++特性)

2010-02-11 11:17 363 查看
《笔记》孙鑫老师MFC第二讲(C++特性)

C++是一种不完全支持面向对象的语言,在MFC中用到C++的封装,继承,多态,模板,RTTI,虚函数(Object slicing)等性质。

主要理解Object slicing
#include <iostream.h>

class CObject
{
public:
virtual void Serialize() { cout<<"CObject::Serialize()/n/n";}
};

class CDocument:public CObject
{
public:
void func()
{
cout<<"CDocument::func()"<<endl;
//     Serialize();//这句代码主要是为了实现虚拟函数的调用
}
void Serialize() { cout<<"CDocument::Serialize()/n/n";}
};

class CMyDoc:public CDocument
{
public:
void Serialize() { cout<<"CMyDoc::Serialize()/n/n";}
};

void main()
{
CMyDoc mydoc;
CMyDoc *pmydoc=new CMyDoc;

cout<<"#1 testing"<<endl;
mydoc.func();

cout<<"#2 testing"<<endl;
((CDocument *)(&mydoc))->func();

cout<<"#3 testing"<<endl;
pmydoc->func();

cout<<"#4 testing"<<endl;
((CDocument)mydoc).func();
}

运行结果1:(注释掉函数func里Serialize()的的情况)
#1 testing
CDocument::func()
#2 testing
CDocument::func()
#3 testing
CDocument::func()
#4 testing
CDocument::func()

运行结果2:(没注释的情况)
#1 testing
CDocument::func()
CMyDoc::Serialize()

#2 testing
CDocument::func()
CMyDoc::Serialize()

#3 testing
CDocument::func()
CMyDoc::Serialize()

#4 testing
CDocument::func()
CDocument::Serialize()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: