C++ Primer Plus学习笔记之虚函数
C++语言的多态性有两种类型:静态多态性和动态多态性。函数重载和运算符重载就是静态多态性的具体表现,而动态多态性是指程序运行过程中才动态的确定操作所针对的对象,它是通过虚函数实现的;
1,虚函数的概念:
一个指向基类的指针可用来指向从基类派生的任何对象,这样就可以达到一个接口多个实现的访问了;虚函数是在基类中被冠以virtual的成员函...
分类:
编程语言 时间:
2014-05-10 10:14:19
阅读次数:
290
以前,知道了虚函数表的低效性之后,一直尽量避免使用之。所以,在最近的工程中,所有的析构函数都不是虚函数。今天趁着还书的机会到图书馆,还书之后在 TP
分类下闲逛,偶然读到一本游戏编程书,里面说建议将存在派生的类的析构函数都设置为 virtual。例如 ParentClass 和 ChildClass...
分类:
编程语言 时间:
2014-05-08 23:21:08
阅读次数:
486
python是面向对象的解释性语言,然而python是通过C语言实现的,C语言怎么跟面向对象扯上了关系? C语言可以实现面向对象的性质?...
分类:
编程语言 时间:
2014-05-08 17:14:42
阅读次数:
418
面向对象编程有三个特征,即封装、继承和多态,学习多态必须了解向上转型和向下转型。一、向上转型:将子类对象赋值给父类的引用动物 a=new
狗();//这就为向上转型向上转型都会成功,是安全的。 就像说狗是动物没问题。语法:a是引用变量,指向了d对象class Test{ public
stat...
分类:
编程语言 时间:
2014-05-08 11:50:41
阅读次数:
381
1
.虚函数假设people是man的父类,people类和man类都定义了实函数walk()people* p = new
man();p->walk();这里P执行的是people类的walk()函数。这和java语言不一样,java在这里执行的是man的walk()函数。那么C++如何实现子类...
分类:
编程语言 时间:
2014-05-08 09:30:01
阅读次数:
349
本文意在巩固基础知识,并不是对其进行深入剖析,如若对各位高手没有什么作用,请绕过。本文为原创文,所有示例均是博主测试过的,欢迎大家批评指正,如有转载请标明出处,谢谢。继承、封装和多态是面向对象编程的重要特性。其成员被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类。派生类隐式获得基类的除构造函...
分类:
其他好文 时间:
2014-05-07 18:06:10
阅读次数:
276
c++的两大特色是多态和模板。其中多态是通过继承和虚函数来实现的,其中虚函数是通过每个对象里面的虚表来实现的。如果这个对象的类有虚函数,那么这个类就有一张虚表,存的是每个虚函数的入口地址,而这个类的每个对象,都会有一个4字节的指针,指向这张虚表,这个就是虚指针。上面一段话很多人都知道,但是如果问普通...
分类:
编程语言 时间:
2014-05-07 10:21:02
阅读次数:
471
面向对象的多态是建立在继承上,可以说没有继承就没有多态;多态:父类指针指向了子类的对象;1
int main()2 {3 //假设已定义了Animal类和它的子类Dog,那么多态的代码体现就是4 Animal *a = [Dog
d];//父类指针指向了子类对象5 ...
分类:
其他好文 时间:
2014-05-07 09:05:03
阅读次数:
237
这两天较系统的看了下C++的基本用法,对比自己对Java理解,感觉就是C++特性远远多于Java,语法上兼容C,更加贴近系统和底层,对内存操作非常的灵活。如:
C++中类的对象可以开辟在栈空间中。Java类的对象都必须用new关键字开辟在堆中;
C++的基本数据类型也可以用new开辟在堆中。Java基本数据类型只能开辟在栈中,除非使用包装类包装成对象;
C++用new开辟的内存必须手动delete,否则内存泄露。Java则有著名的垃圾回收;
C++传参可以传值和传引用,也可以配合指针传对象地址,自己来决定。...
分类:
编程语言 时间:
2014-05-07 08:45:33
阅读次数:
353