下面这样一个程序:(以下程序都是在VS2010下实现) 1: class Base 2: { 3: public: 4: virtual void func() 5: { 6: coutfunc(); 23: cin.get(); 24: }注意第3行和第12行,派生类访问权限为private,但程...
                            
                            
                                分类:
编程语言   时间:
2014-08-08 15:19:26   
                                阅读次数:
262
                             
                    
                        
                            
                            
                                代码:
#include 
using namespace std;
/*
class a{
	float k;  // 4字节
	virtual void foo(){} //有一个4字节的指针指向自己的虚函数表
};
class b : virtual public a{  
	virtual void f(){}
};  有这样的一个指针vptr_b_a,这个指针叫虚类指针,也是四个字节...
                            
                            
                                分类:
其他好文   时间:
2014-08-07 23:23:25   
                                阅读次数:
465
                             
                    
                        
                            
                            
                                参考:深度探索C++对象模型 (stanley B.Lippman著 侯捷翻译)
1. Page9 : C++对象模型,说明每一个类仅有一个虚函数表Vtbl,而类的每一个对象都有指向其表的指针。
2. Page30:引用也需要与一个指针(大小为4BYTE)相同的空间。
3. Page28: 指针类型会教导编译器如何解释某个特定地址中的内存内容及大小。
4. Page39: explicit...
                            
                            
                                分类:
编程语言   时间:
2014-08-07 23:19:15   
                                阅读次数:
295
                             
                    
                        
                            
                            
                                c++类大小和机器还有编译器有关。64位机器指针大小为8个字节,32位机器为4个字节。每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址;有虚函数的类有个virtual table(虚函数表),里面包含了类的...
                            
                            
                                分类:
编程语言   时间:
2014-08-07 18:37:30   
                                阅读次数:
251
                             
                    
                        
                            
                            
                                抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。重写的子类虚函数就是被覆盖了。 抽象方法 使用abstract关键字 public abstract bool Withdraw(…);抽象...
                            
                            
                                分类:
其他好文   时间:
2014-08-06 14:08:51   
                                阅读次数:
221
                             
                    
                        
                            
                            
                                1、虚函数 http://blog.csdn.net/livelylittlefish/article/details/2171504
                            
                            
                                分类:
其他好文   时间:
2014-08-04 21:18:17   
                                阅读次数:
195
                             
                    
                        
                            
                            
                                1.多态在面向对象语言中,接口的多种不同实现方式即为多态。多态是指,用父类的指针指向子类的实例(对象),然后通过父类的指针调用实际子类的成员函数。在Java中,没有指针,就直接用父类实例化子类对象多态性就是允许将子类类型的指针赋值给父类类型的指针,多态是通过虚函数实现的,多态可以让父类的指针有“多种...
                            
                            
                                分类:
其他好文   时间:
2014-08-04 17:00:37   
                                阅读次数:
259
                             
                    
                        
                            
                            
                                http://blog.csdn.net/estelle_belle/article/details/16944597不懂虚函数有什么用,不知道除了构造函数,析构函数外还有拷贝函数,还有深浅拷贝之分。每天下班后我没有直接回家,而是留在了单位telnet到SUNOS上,开始了我学习unix的计划。我觉...
                            
                            
                                分类:
其他好文   时间:
2014-08-03 22:58:36   
                                阅读次数:
237
                             
                    
                        
                            
                            
                                C++程序员编码过程中经常会使用string(wstring)类,你是否思考过它的内部实现细节。比如这个类的迭代器是如何实现的?对象占多少字节的内存空间?内部有没有虚函数?内存是如何分配的?...
                            
                            
                                分类:
编程语言   时间:
2014-08-03 05:45:54   
                                阅读次数:
350
                             
                    
                        
                            
                            
                                1.虚指针和虚函数表 1.1不含有任何数据成员或者虚函数的class或者struct大小为1,含有虚函数的对象在基地址部分有一个vptr,指向虚函数表,因此大小为4个字节。 1.2动态绑定的原理:假设派生类和基类存在覆盖的关系(基类中定义了虚函数),那么派生类在虚函数表中,会覆盖掉基类相应的虚函.....
                            
                            
                                分类:
编程语言   时间:
2014-08-02 01:47:42   
                                阅读次数:
356