#include <stdio.h>
#pragma pack(2)
struct Test1
{
int a;
char b;
short c;
int *d;
}A;
#pragma pack()
#pragma pack(4)
struct Test2
{
int *d;
char b;
int a;
short c;
}B;
#pragma pack()
int main()
{
printf("%d,%d\n",sizeof(A),sizeof(B));
return 0;
}
输出:12,16
机器语言,汇编语言,高级语言
声明部分、执行部分、声明部分、执行部分。
class Vir{
public:
virtual void tryVirtual();
};
class CVir:public Vir{
public:
void tryVirtual(){
std::cout<<"CVir"<<std::endl;
}
};
(1)在main函数中,假设有父类或者子类的实例对象,就须要有父类的虚函数的实现。
(2)在main函数中,假设没有父类或者子类的实例对象,能够不实现父类的虚函数。
(3)假设把虚函数写成纯虚函数,也就不须要实现了。也没不会发生上述讨论。
当用#include“file.h”时,先搜索当前工作目录,如果没有,再去搜索库,库没有再搜索资源库;
当用#include<file.h>时,编译器先从标准库路径开始搜索,如果没再搜索资源库目录,最好搜索当前工作目录。
1. 用8位二进制补码表示有符号的定点整数,可表示的最大整数是(127),最小整数是(-128)。
2. 用16位二进制码表示无符号的定点整数,可表示的最大整数是(65535),最小整数是(0)。
class Base {
char data[3];
public:
virtual void f() { cout << "Base::f" << endl; }
virtual void g() { cout << "Base::g" << endl; }
virtual void h() { cout << "Base::h" << endl; }
};
int main()
{
cout << sizeof(Base)<< endl;
return 0;
}
正确答案:8
虚函数会保存一个虚表指针,考虑字节对齐 3+4+1=8
细节见:https://www.cnblogs.com/GuoXinxin/p/11687712.html
#include <stdio.h>
int main()
{
int intArray[] = {1, 2, 3, 4, 5};
int *p = (int *)(&intArray+1);
printf("%d,%d",*(intArray+1),*(p-1));
return 0;
}
A 1,5
B 1,6
C 2,4
D 2,5
正确答案:D
数组取地址后加一是直接增加数组长度 和二维数组类似
原文:https://www.cnblogs.com/GuoXinxin/p/11687969.html