摘要: 刚刚又被问的哑口无言,首先争论了一个话题..忘了 ,反正我是错了,之后就乱了阵脚,这会儿冷静下来总结一下1.首先什么是纯虚函数:/* ===纯虚函数=== 一个类是不是抽象类就看你里面到底有没有纯虚函数 virtual void eat() = 0 定义:虚函数 = 0 /--- 纯虚类就相当于接口,不能被别人实现, 只能被继承,在使用里面的东东 ------类似OC协议------- ---/*/2.同一个类的不同对象对象共用同一个虚表,虚表地址一样同一个类不同对象共用相同的函数体3.然后怎么初始化const变量,因为const变量不能直接初始化招数:就是用初始化列表解决4.静态变量和... 阅读全文
posted @ 2013-10-05 22:43 阿里海瑟要 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 虚函数内部机制,其实就是为了实现多态用的:大概的含义是这样的,当你用父类的指针指向子类,同时用这个父类的指针去调用子类的方法的时候.如果这个方法是继承自父类,同时父类又把它声明为虚函数,那么如果子类重载了这个方法,调用顺序就会先通过一个指针(声明虚函数同时就会多一个指针,用来指向虚函数表,这个表里面存了所有的虚函数,这个表类似一个数组,里面的虚函数顺序和自定义函数的顺序相一致)去查找子类的虚函数表,然后找到这个表里面存的函数的地址,再通过这个函数地址找到相应的函数,再去调用这个函数,那如果子类没有重载这个函数,就会直接去掉用找父类的相应函数.如果你不把析构函数声明为虚函数,那么当你用父类的指针 阅读全文
posted @ 2013-10-05 12:08 阿里海瑟要 阅读(210) 评论(0) 推荐(0) 编辑