![](https://img-blog.csdnimg.cn/direct/760dc826821b4247a2d8b0f1431656e7.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面经
文章平均质量分 92
C++
leisure-pp
这个作者很懒,什么都没留下…
展开
-
每日一面——C++11的新特性
左值引用是具名变量值的别名,而右值引用则是不具名(匿名)变量的别名。为了解决循环引用导致的内存泄漏,引入了弱指针weak_ptr,weak_ptr的构造函数不会修改引用计数的值,从而不会对对象的内存进行管理,其类似一个普通指针,但是不会指向引用计数的共享内存,但是可以检测到所管理的对象是否已经被释放,从而避免非法访问。C++11中增加了右值引用,右值引用关联到右值时,右值被存储到特定位置,右值引用指向该特定位置,也就是说,右值虽然无法获取地址,但是右值引用是可以获取地址的,该地址表示临时对象的存储位置。原创 2024-03-15 10:30:57 · 961 阅读 · 0 评论 -
每日一面——虚拟继承、抽象类和四种类型转化
C++支持多继承,除了public、private、protected三中继承方式外,还提供虚拟继承 virtual ,如果类B和类C同时公有继承类A,而类D有多重继承类B、C,这这种方式被叫做菱形继承虚拟继承的情况下,无论基类被继承多少次,只会存在一个实体虚拟继承基类的子类中,子类会增加某种形式的指针,或者指向虚基类对象,或者指向一个相关的表格;原创 2024-03-13 15:17:19 · 726 阅读 · 0 评论 -
每日一面——成员初始化列表、移动构造和拷贝构造
移动操作的发生的时候,是当移动值的对象是未命名的对象的时候。有时候我们会遇到这样一种情况,我们用对象a初始化对象b后对象a我们就不在使用了,但是对象a的空间还在呀(在析构之前),既然拷贝构造函数,实际上就是把a对象的内容复制一份到b中,那么为什么我们不能直接使用a的空间呢?如果把拷贝构造函数的参数设置为值传递,那么参数肯定就是本类的一个object,采用值传递,在形参和实参结合的时候,是需要调用本类的拷贝构造函数,就形成一个死循环,是为了避免拷贝构造函数无线递归下去。必须使用成员初始化的四种情况。原创 2024-03-12 22:19:26 · 1056 阅读 · 0 评论 -
每日一面——封装、继承和多态
面向对象是一种编程思想,把一切东西看出是一个个对象,它们各自有各自的属性,把这些对象拥有的属性变量和操作这些属性的函数打包成一个类来表示面向对象和面向过程的区别面向过程:根据业务逻辑从上到下写代码面向对象:将数据与函数绑定到一起,进行封装,这样能够快速的开发程序,减少重复代码的重写过程。原创 2024-03-10 22:30:55 · 902 阅读 · 1 评论 -
每日一面——虚函数、动态绑定、静态绑定
但是在对象创建的过程中,由于对象还没有完全构造成功,因此在构造函数和析构函数中不能使用虚函数,这是因为在对象构造期间,虚函数表尚未构建,而且对象还没有完成其完整的初始化。同样,派生类构造函数也不能是虚函数,因为派生类的构造函数必须调用其基类的构造函数,如果基类的构造函数是虚函数,将无法保证正常的顺序。因此,类的构造函数不能是虚构函数。2)析构函数可以被声明为虚函数,因为当基类指针指向派生类对象的时候,发生多态,如果不将基类的析构函数定义为虚函数的话,那么派生类的析构函数就无法执行,造成内存泄露。原创 2024-03-09 20:36:08 · 672 阅读 · 2 评论 -
每日一面——const关键字
对于函数值传递的情况,因为参数传递是通过复制实参创建一个临时变量传递进函数的,函数内只能改变临时变量,但无法改变实参。但是在引用或指针传递函数调用中,因为传进去的是一个引用或指针,这样函数内部可以改变引用或指针所指向的变量,这时const 才是实实在在地保护了实参所指向的变量。底层const:指的是const修饰的变量所指向的对象是一个常量,指的是所指变量,就是 * 号的左边。顶层const:指的是const修饰的变量本身是一个常量,无法修改,指的是指针,就是 * 号的右边。原创 2024-03-07 08:14:20 · 551 阅读 · 0 评论 -
每日一面——static关键字
在c++中,static关键字可以用于定义类中的静态成员变量:使用静态数据成员,它既可以被当成全局变量那样去存储,但又被隐藏在类的内部。⑦ 由于static修饰的类成员属于类,不属于对象,因此static类成员函数是没有this指针的,this指针是指向本对象的指针。正因为没有this指针,所以static类成员函数不能访问非static的类成员,只能访问 static修饰的类成员;⑤ 在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。原创 2024-03-06 08:14:08 · 559 阅读 · 0 评论 -
每日一面——inline关键字和include头文件
肯定包括,如上知,编译器可以选择调用内联函数,而非直接展开它。因此,在内存中仍然需要一份内联函数的定义,以供调用。而且,一致性是所有语言都应该遵守的准则,普通函数有可以有指向它的函数指针,那么内联函数也可以有,因此内存中需要。。。,使得函数指针可以存在内联函数是在编译是展开,而宏是在编译预处理时展开;在编译时,内联函数直接被嵌入到目标代码中去,而宏只是做了简单的文本替换。原创 2024-03-05 08:12:46 · 1033 阅读 · 0 评论