C++ prime/笔试总结六
程序员文章站
2022-05-03 19:41:08
//此后看Effective c++ 以及 STL源码剖析
51.在一个构造函数中,成员的初始化是在函数体执行之前完成的,且按照它们在类中出现的顺序进行初始化.
在一个析...
//此后看Effective c++ 以及 STL源码剖析
51.在一个构造函数中,成员的初始化是在函数体执行之前完成的,且按照它们在类中出现的顺序进行初始化.
在一个析构函数中,首先执行函数体(销毁),然后销毁成员.成员按初始化顺序的逆序销毁.
52.(1)如果一个类需要自定义析构函数,几乎可以肯定它也需要自定义拷贝赋值运算符和拷贝构造函数;
(2)需要拷贝操作的类也需要赋值操作,反之亦然
53.当用 =default 修饰成员时,合成/默认的函数将隐式地声明为内联的;
=delete修饰成员时,指出我们希望它定义为”删除的”,常用于阻止拷贝/赋值等
(=delete 通知编译器,我们不希望定义这些成员)
注: delete不能修饰 析构函数
54.模板声明必须包含模板参数,这样当模板被使用时才会实例化.
55.不能声明为虚函数的函数有:
1.普通函数(非成员函数); 2.静态(static)函数; 3.内联成员函数; 4.构造函数; 5.友元函数;6….
56.size_t是一个与机器相关的unsigned类型,其大小保证足以存储内存中对象的大小.
size_t是标准C库中定义的,应为unsigned int,在64位系统中为 long unsigned int.
57.区分: 重载,覆盖,隐藏(具体自己百度or google)
(1)声明在内存的函数不会重载声明在外层作用域的函数,而是将外层的函数隐藏了;
同理,派生类中的函数不会重载其基类中的成员;当它们函数名称,参数类型都相同,且不是虚函数时,派生类的函数会将基类的函数隐藏.
(2)而覆盖是指: 派生类的(虚)函数覆盖基类的虚函数.