关闭

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

标签: 面向对象编程C++函数继承虚函数
237人阅读 评论(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网站的观点或立场

深度学习word2vec笔记之算法篇

深度学习word2vec笔记之算法篇
  • mytestmy
  • mytestmy
  • 2014-05-25 20:03
  • 33238

C++学习笔记(一) 补充篇 基础语法 — 参考慕课网 值得推荐!

2016年8月23日 前段时间真的是恍然大悟,书看错了,我看的 C++ prime plus看的真心的难受,也不知道这本书到底在写什么。 2016年8月28日 一晃又过了4-5天,真快啊,发现那...
  • David_Han008
  • David_Han008
  • 2016-08-25 16:47
  • 2929

C++虚函数声明和定义以及g++编译遇到的一些问题

遇到了一些麻烦的,记录下来作为教训…..1. 虚函数的声明和定义具体关于虚函数的知识不做多讲,我在定义一个抽象类时,忘了将一个虚函数声明为 纯虚函数,又没有对其定义, 导致编译报错时报错如下:unde...
  • GVFDBDF
  • GVFDBDF
  • 2016-07-19 12:47
  • 2082

C++学习笔记(13)——利用对象、引用、指针调用虚函数

本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!            &#...
  • shejiannan
  • shejiannan
  • 2015-03-20 17:37
  • 531

C++学习笔记26,虚函数

在C++里面,虚函数是一类重要的函数!
  • guang_jing
  • guang_jing
  • 2014-06-18 09:32
  • 1236

C++学习笔记27,虚函数的工作原理

C++规定了虚函数的行为,但是将实现交给了编译器的作者. 通常,编译器处理虚函数的方法是给每一个对象添加一个隐藏成员.隐藏成员中保存了一个指向函数地址数组的指针. 这个数组称为虚函数表(virtual...
  • guang_jing
  • guang_jing
  • 2014-06-18 10:35
  • 1252

C++学习笔记---利用对象、引用、指针调用虚函数

虚函数总结:               虚函数只能是类成员函数,它在基类体内部说明,目的是提供一种接口界面;     &#...
  • Weiguang_123
  • Weiguang_123
  • 2014-04-19 21:51
  • 1683

C++学习笔记--多态、虚函数

前面一节课中讲到了函数重写,最后也提出了一个问题,怎么解决函数重写和赋值兼容之间的问题? 首先回顾下,父类中被重写的函数依然会继承给子类,只是子类中的重写函数会覆盖父类的 被重写函数。但是当函数重写和...
  • tqs_1220
  • tqs_1220
  • 2017-12-04 16:45
  • 33

c++学习笔记(十三):纯虚函数和抽象类

1、 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本。   纯虚函数为各派生类提供一个公共界面   纯虚函数说明形式:     virtual  类...
  • my_sky2012
  • my_sky2012
  • 2015-10-26 16:24
  • 185

C++学习笔记28,纯虚函数和抽象基类

纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。---
  • guang_jing
  • guang_jing
  • 2014-06-18 16:38
  • 1257
    个人资料
    • 访问:23693次
    • 积分:994
    • 等级:
    • 排名:千里之外
    • 原创:65篇
    • 转载:10篇
    • 译文:0篇
    • 评论:11条
    个人说明
    个人很喜欢的一句话, (摘自网络):
    时光荏苒,祝愿不要忘记曾经的初心

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

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

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

    每天进步一点点, 共勉!

    博客专栏
    最新评论