objc优点:1)Cateogies2)Posing3)动态识别4)指标计算5)弹性讯息传递6)Objective-C与C++可混合编程缺点:1)不支援命名空間2)不支持运算符重载3)不支持多重继承4)使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。
分类:
其他好文 时间:
2015-02-26 11:50:36
阅读次数:
113
转自陈皓的博客前言在谈论虚函数表里,至少有以下这些内容没有涉及:
- 有成员变量的情况。
- 有重复继承的情况。
- 有虚拟继承的情况。
- 有钻石型虚拟继承的情况。所以,这篇文章将会是《C++虚函数表解析》的一个续篇,也是一篇高级进阶的文章。对象的影响因素简而言之,我们一个类可能会有如下的影响因素:
成员变量
虚函数(产生虚函数表)
单一继承(只继承于一个类)
多重继承(继承多个类)
重复...
分类:
编程语言 时间:
2015-02-17 18:47:53
阅读次数:
156
1.虚函数不能被内联。 因为“内联”意味着“在编译时刻用被调用函数的函数体来代替被调用的函数”。但是“虚函数”意味着“运行时刻决定被调用的是哪一个函数”。2.多重继承一般要求基类为虚基类。 不是虚基类的话,如果一个派生类有多于一条通向基类的继承路径,基类的数据成员会被复制到每一个继承类的对象里,继承...
分类:
其他好文 时间:
2015-02-16 23:29:20
阅读次数:
199
对C++继承的一点理解 一直对C++的继承模糊不清,今天看了一篇技术博,写得很好,让我是深有感触,忍不住就记录了一下重点(我转载过来了,方便同样对继承模糊不清的你:C++类的继承和派生)class 派生类名称:继承方式(public、private or protected) 基类1,…,继承方式 基类n
{
派生类成员声明;
}多重继承:一个派生类有多个基类
单继承:一个派生类只...
分类:
其他好文 时间:
2015-02-12 20:10:24
阅读次数:
164
Abstract classInterface实例化不能不能类一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承一个类可以实现多个interface数据成员可有自己的静态的不能被修改即必须是static final,一般不在此定义方法可以私有的,非abstract方法,必须实...
分类:
编程语言 时间:
2015-02-11 16:20:08
阅读次数:
141
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法...
分类:
其他好文 时间:
2015-02-06 13:11:02
阅读次数:
146
当一个类有多个基类的时候,通过所有直接基类同时进行名字查找。多重继承的派生类有可能从两个或多个基类继承同名成员,对该成员如果不加限定的话,这样使用就是二义性的。即使两个继承的函数有不同的形参表也会产生错误,类似的,即使函数在一个类中是私有的而在另一个类中是公用的或受保护的,也同样是错误的。名字查找总是以两个步骤发生:首先编译器找到一个匹配的声明(若找到两个以致多个声明,就会产生二义性),然后,编译...
分类:
编程语言 时间:
2015-02-05 09:34:02
阅读次数:
176
虚继承是一种机制,类通过虚继承指出它希望共享其虚基类的状态,在虚继承下,对给定虚基类,无论该类在派生层次中作为虚基类出现多少次,只继承一个共享的基类子对象,共享的基类子对象称为虚基类。举例:istream和ostream类对它们的基类进行虚继承,通过使基类成为虚基类,istream和ostream指定,如果其他类(如iostream)同时继承它们两个,则派生类中只出现它们的公共基类的一个副本。可以...
分类:
编程语言 时间:
2015-02-05 09:31:28
阅读次数:
120
来个例子就明了了:
#include
using namespace std;
class Base1
{
public:
virtual ~Base1(){
cout<<"Base1"<<endl;
}
};
class Base2
{
public:
virtual ~Base2(){
cout<<"Base2"<<endl;...
分类:
编程语言 时间:
2015-02-05 09:31:24
阅读次数:
127
iOS谋职之OC面试题iOS求职之OC面试题IOS求职之OC面试题1、Objective-C的类可以多重继承么?可以采用多个协议么?答:不可以多重继承,可以采用多个协议。2、#import和#include的区别是什么?#import 跟 #import""有什么区别?#import能避免头文件被重...
分类:
移动开发 时间:
2015-02-03 22:47:29
阅读次数:
276