本文转自陈皓大叔(左耳朵耗子)的博客www.coolshell.com。 文章是很久之前所写,去年还在写C++时有幸拜读,现在想起来还是相当有价值一转的,如果有一定C++基础(特别是读过《深度探索C++对象模型》)应该可以比较无痛地理解这篇文章。另外十分打心底敬佩那些肯花大量时间和心血写这些高质量文...
分类:
编程语言 时间:
2015-04-15 18:34:03
阅读次数:
136
6.3.3 用虚函数实现多态在理解了面向对象的继承机制之后,我们知道了在大多数情况下派生类是基类的“一种”,就像“学生”是“人”类中的一种一样。既然“学生”是“人”的一种,那么在使用“人”这个概念的时候,这个“人”可以指的是“学生”,而“学生”也可以应用在“人”的场合。比如可以问“教室里有多少人”,...
分类:
编程语言 时间:
2015-04-15 16:43:41
阅读次数:
219
虚函数虚函数就是用virtual来修饰的函数。虚函数是实现C++多态的基础。虚表每个类都会为自己类的虚函数创建一个表,来存放类内部的虚函数成员。虚函数表指针每个类在构造函数里面进行虚表和虚表指针的初始化。下面看一段代码://
// main.cpp
// VirtualTable
//
// Created by Alps on 15/4/14.
// Copyright (c) 2015年...
分类:
编程语言 时间:
2015-04-15 06:08:00
阅读次数:
185
虚函数是C++用于实现多态机制。如果父类不用virtual进行声明,则父类调用子类对象方法的时候仍然是父类方法。我们也可以在子类覆盖父类方法后面添加override检测。并且派生类通过指针或者引用指向派生类函数,则表现为派生类的特征。 例如: class Parent
{
public: virtu...
分类:
其他好文 时间:
2015-04-13 12:24:55
阅读次数:
121
构造派生类对象时首先运行基类构造函数初始化对象的基类部分。在执行基类构造函数时,对象的派生类部分是未初始化的。实际上,此时对象还不是一个派生类对象。 撤销派生类对象时,首先撤销它的派生类部分,然后按照与构造顺序的逆序撤销它的基类部分。 在这两种情况下,运行构造函数或析构函数的时候,对象都是不完整的。为了适应这种不完整,编译器将对象的类型视为在构造或析构期间发生了变化。在基类构造函数或析构函数中,...
分类:
其他好文 时间:
2015-04-13 09:40:47
阅读次数:
93
本文概要:讲解Qt的信号与槽机制,涉及信号与槽的连接方法,连接条件等。可以使用信号与槽机制的类:信号与槽机制是在QObject类中实现的,这种机制能够用与任何QObject子类中,但是应该在类中加入Q_OBJECT宏。槽的介绍:槽与普通的c++成员函数几乎一样;槽能够被声明为虚函数,能被重载,能够被...
分类:
其他好文 时间:
2015-04-12 11:49:23
阅读次数:
108
http://blog.csdn.net/haoelC++ 虚函数表解析 - 陈皓专栏 【空谷幽兰,心如皓月】 - 博客频道 - CSDN.NEThttp://blog.csdn.net/haoel/article/details/1948051/#includeusing namespace st...
分类:
编程语言 时间:
2015-04-11 11:46:42
阅读次数:
136
1,直接用基类指针引用基类对象
2,直接用派生类指针引用派生类对象
3,用基类指针引用一个派生类对象,由于派生类对象也是基类的对象,所以这种引用是安全的,
但是只能引用基类成员。若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。(解决该问题的答案是虚函数和多态性)
4,用派生类指针引用基类的对象。这种引用方式会导致语法错误。派生类指针必须先强制转换为基类指针,这种方法...
分类:
编程语言 时间:
2015-04-10 18:08:57
阅读次数:
121
6.3 类是如何面向对象的类作为C++与面向对象思想结合的产物,作为面向对象思想在C++中的载体,它的身上流淌着面向对象的血液。从类成员的构成到类之间的继承关系再到虚函数,到处都体现着面向对象封装、继承和多态的三大特征。6.3.1 用类机制实现封装考虑这样一个现实问题,学校中有多个老师,每个老师的名...
分类:
编程语言 时间:
2015-04-10 15:01:22
阅读次数:
137