关闭

C++学习笔记03之虚函数的声明和实现

标签: 面向对象编程C++函数继承虚函数
185人阅读 评论(0) 收藏 举报
分类:

首先,OOP (面向对象编程)中,两个类之间的关系:
一、复合 Composition

二、委托 Delegation
Composition by reference
用指针相连

三、继承 Inheritance
virtual function 虚函数


现在,我写出虚函数的声明和实现,并用test程序测试。

        声明:

class Shape {
public:
	// 继承的三种方式(通过虚函数)
	virtual void draw() const = 0; // 1. pure virtual
	virtual void error(const std::string& msg); // 2. impure virtual
	int objectID() const; // 3. non-virtual
	...
}; 

class Rectangle: public Shape { ... };
class Ellipse: public Shape{ ... };       


        函数实现:

class CDocument
{
public:
	void OnFileOpen()
	{
	// 这是个算法,每个 cout 输出代表一个实际动作
	cout << "dialog..." << endl;
	cout << "check file status..." << endl;
	cout << "open file..." << endl;
	Serialize();
	cout << "close file..." << endl;
	cout << "update all views..." << endl;	
	}
	
	virtual void Serialize() { };
};

class CMyDoc : public CDocument
{
public:
	virtual void Serialize()
	{
		// 只有应用程序本身才知道如何读取自己的文件(格式)
		cout << "CMyDoc::Serialize()" << endl;
	}
};

        test程序:

int main()
{
	CMyDoc myDoc; // 假设对应[File/Open]
	myDoc.OnFileOpen();
        return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13342次
    • 积分:675
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:9篇
    • 译文:0篇
    • 评论:10条
    个人说明
    个人很喜欢的一句话, (摘自网络):
    时光荏苒,祝愿不要忘记曾经的初心

    本人现在是一名大二软件工程专业的学生, 每月会坚持更新, 本博客会总结, 整理, 分享个人学习的相关技术知识, 用来记录自己不断进步的历程, 当然内容会以Java为主线.

    虽然是技术博客, 但毕竟是人, 也有自己的情感, 所以, 有时也会分享一些有用的学习资源和一些学习经验和方法, 同时也会写一些其它方面上自己的感受和想法!

    或许我的博客不是写得非常好, 但每一篇文章绝对会用心写! 如果, 你发现有不足或者错误之处, 非常欢迎指出, 当然也欢迎各位小伙伴们来交流技术和学习感受.

    每天进步一点点, 共勉!
    博客专栏
    最新评论