牛客 C++刷题day23

1.C++或者C里面的注释有两种,一种是/*------*/,另外一种是单独一行//----- 即可  

2.析构函数名与类名相同,只是在函数名前面加一个位取反符~,以区别于构造函数 。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载 。如果用户没有编写析构函数,编译器 自动生成一个缺省的析构函数(即使自定义了析构函数,编译器 也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。

3.

仿函数的主要功能是为了搭配STL算法使用,单独使用仿函数的情况比较少。
仿函数(functors)在C++标准中采用的名称是函数对象(function objects)。仿函数主要用于STL中的算法中,虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,也不能满足软件积木的要求–函数指针无法和STL其他组件搭配,产生更灵活变化。仿函数本质就是类重载了一个operator(),创建一个行为类似函数的对象。

对于重载了()操作符的类,可以实现类似函数调用的过程,所以叫做仿函数,实际上仿函数对象仅仅占用1字节,因为内部没有数据成员,仅仅是一个重载的方法而已。实际上可以通过传递函数指针实现类似的功能,但是为了和STL内部配合使用,他提供了仿函数的特性。

例子如下:

struct node
{
bool operator()(const int a,const int b) const
{
return a<b;
}
bool operator>(const int a,const int b) const
{
return a>b;
}
};

我们可以通过调用对象或者临时类的函数来进行调用。本质上就是一个函数指针,但是函数指针并不能与STL的抽象性结合,所以才出现了仿函数这个玩意。

4.可见性指哪里可以调用,能调用就是可见的,存在性指的什么时候初始化什么时候释放,一个是文本上的范围,一个是生命周期

内部静态类的可见性是定义它的函数范围内(即‘{}’内),而其存在性是直到程序运行结束

传递一个数组,实参可以省略长度,形参第一维可以省略,但是剩下的都必须指定长度

扫描二维码关注公众号,回复: 7365607 查看本文章

5.else总是与同一作用域下最近的未与else配对的if配对。不要理解简单了。

6.类中要明确一点,在构造函数执行完以后虚函数表才能正确初始化,所以在构造函数中调用虚函数时此时虚函数表还没有被正确初始化,调用的是本类的函数,即静态类型所对应的函数,同理在析构函数中也不能调用虚函数,因为此时虚函数表已经被销毁

7.

猜你喜欢

转载自www.cnblogs.com/Tonarinototoro/p/11585504.html