首页 > 试题广场 >

什么是大小端模式?如何判断某一个系统是大端模式还是小端模式?

[问答题]
什么是大小端模式?如何判断某一个系统是大端模式还是小端模式? 2. 请简述C++中的虚函数的实现机制。(可以举例说明)

基类的虚函数表的创建:首先在基类声明中找到所有的虚函数,按照其声明顺序,编码0,1,2,3,4……,然后按照此声明顺序为基类创建一个虚函数表,其内容就是指向这些虚函数的函数指针,按照虚函数声明的顺序将这些虚函数的地址填入虚函数表中。例如若show放在虚函数声明的第二位,则在虚函数表中也放在第二位。

 

对于子类的虚函数表:首先将基类的虚函数表复制到该子类的虚函数表中。若子类重写了基类的虚函数show,则将子类的虚函数表中存放show的函数地址(未重写前存放的是子类的show虚函数的函数地址)更新为重写后函数的函数指针。若子类增加了一些虚函数的声明,则将这些虚函数的地址加到该类虚函数表的后面。

发表于 2021-03-12 10:44:51 回复(0)
大端模式为高地址存低位数据、低地址存高位数据。
小端模式为低地址存低位数据、高地址存高位数据。

int a = 0x1234;
char c = (char)a;
if(c == 0x12)
    cout<<"大端"<<endl;
else if(c == 0x34)
    cout<<"小端"<<endl;

基类定义虚函数,子类重写该虚函数,用父类的指针指向子类对象时,子类对象有一个虚指针 指向虚函数表,虚函数表存的函数指针,会根据实际子类对象调用对应重写的函数。
发表于 2022-08-12 16:44:09 回复(0)