C/C++重点知识点

PART 1

16/32/64位机器上 char占用1个字节、short、short int占用2个字节、float占用4个字节、double、long long占用8个字节

int、unsigned int在16位机器上占用2个字节,在32/64位机器上占用4个字节

指针在16位平台占用2个字节,在在32位机器上占用4个字节,在64位机器上占用8个字节

long、unsigned long在16/32位机器上占用4个字节,在64位机器上占用8个字节。

综上所述,如果不考虑很少使用的16位机器的情况。char(1)、short/short int(2)、float/int/unsigned int(4)、double/long long(8)在32位和64位机器上占用的空间是一样的。只有long/unsigned long/指针(4、8)有差别。

具体如图所示:

32bit 平台

64bit 平台

char

1

1

short

2

2

int

4

4

long

4

8

long long

8

8

float

4

4

double

8

8

pointer

4

8

PART 2

C++ 是区分大小写的编程语言。

C++之所以增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能。
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。引用很容易与指针混淆,它们之间有三个主要的不同:
1、不存在空引用。引用必须连接到一块合法的内存。
2、一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
3、引用必须在创建时被初始化。指针可以在任何时间被初始化。

实际操作中,我们一般会在私有区域定义数据,在公有区域定义相关的函数,以便在类的外部也可以调用这些函数。这个方式确实好,有点里应外合的感觉。
C++中,单冒号用于继承和初始化的赋值,双冒号用于类之外函数的定义以及直接使用类调用静态类成员函数。
如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。

malloc() 函数在 C 语言中就出现了,在 C++ 中建议尽量不要使用 malloc() 函数。new 与 malloc() 函数相比,其主要的优点是,new 不只是分配了内存,它还创建了对象。

重载是指允许存在多个同名方法,而这些方法的参数不同。重载的实现是:编译器根据方法不同的参数表,对同名方法的名称做修饰。对于编译器而言,这些同名方法就成了不同的方法。它们的调用地址在编译期就绑定了。多态是指子类重新定义父类的虚方法(virtual,abstract)。当子类重新定义了父类的虚方法后,父类根据它的不同子类,动态调用属于子类的该方法,这样的方法调用在编译期间是无法确定的。重载发生在一个类中,指函数的方法名相同,参数类型或个数不同,重写发生在继承类中,指函数的方法名、参数类型、返回值类型全都相同。
只有子类转换成父类,父类不可能转换成子类。因为子类是从父类继承而来,子类中包含父类中所有成员。在子类转换成父类的时候,也需要注意,只能是指针或者引用,不能是对象,除非有重写构造函数和赋值函数。在转换成父类的过程中,意味着对子类进行了一个切割,只是将子类中的父类部分赋值给了父类对象。


定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。

猜你喜欢

转载自blog.csdn.net/songkai320/article/details/78005355
今日推荐