c++中的语句
cout里为什么不需要像C中的printf加%d之类的字符
char* a{0x01,0x02,0x03,0x04} 用int* 指向该字节结果是什么
说一下explicit关键字(使用情形:单参数构造函数 重载)
char* 和 string有什么区别?实际中哪一个用的比较多?为什么?
命名空间namespace的使用 四种强制转换 怎么确保基类转派生类时的类型安全
宏和内联函数的区别 宏定义,内联函数,函数 inline与define有什么区别 const和define
联合体、结构体、类的区别
extern “C”,为什么会用C语言的方式编译
指针和数组的区别
如何通过子类指针访问父类的成员函数(static_cast向上转型)
对象模型:
1.什么是对象模型
1.语言中直接支持面向对象程序设计的部分
2.对于各种支持的底层实现机制
C++中使用的对象模型的优缺点:
优点:提高了空间以及存取时间的效率
缺点:如果class object的non static member改变的时候,就需要重新编译代码
主要讨论的有:
(1) non-static , static data member ,template statis data member
static data member永远只存在一份,并且放在全局数据段中
(2) non-static , static , virtual function
2.如何再main函数之前进行构造,其中buf便是在main之前构造
class X;
X buf;
int main(){
....
}
虚函数表里面的内容
虚函数表里面主要存放虚函数,另外的话可能会加上一个或者两个的slots。
一个类怎样不调用构造函数去创建对象
虚函数是怎么实现的深拷贝和浅拷贝
如果没有虚函数 父类指针指向子类对象会怎么办虚函数表
C++ 类指针赋为空,调用类函数会出现什么,为什么?
虚函数表是所有类共用一个吗
虚函数原理, 继承多个类的时候虚函数指针是啥样的
每个对象的虚函数指针的设定以及重置都是由每一个class的构造函数,析构函数以及拷贝赋值运算符自动完成的。
另外的话,每一个类所关联的type_info object(用来支持runtime type)也是经由virtual table指出来的。
虚函数的机制:
1.构造函数的时候,会初始化虚函数指针,使其指向虚函数表
chat int long 32位机器的sizeof大小。
结构体大小(内存对齐相关,为啥要内存对齐,不同操作系统sizeof大小一样吗)
sizeof 的作用
写一个多态,分析子类的内存模型
没有成员变量和虚函数的对象的大小,没有成员变量但有虚函数的对象的大小。
对象大小推断 long a[4], sizeof(a)是多少 一个空的类会自动包含哪些函数
C++内存管理
C++的垃圾回收是什么
C++内存管理,RAII
.如果进行内存管理,了解有垃圾回收机制的语言吗?
5.什么时候要重载拷贝构造函数?(聊了以后发现他的意思是重写overriding)
C++中,类的哪些成员函数是会自动生成的(构造、析构、拷贝构造、拷贝赋值操作符)
C++中,类的哪些成员函数必须自己定义(只回答了析构和拷贝构造)
构造函数为什么需要初始化列表?
构造函数和析构函数是否需要抛出异常
.写一个拷贝构造,考点:深拷贝
C++ 拷贝构造函数 如何禁用
深拷贝与浅拷贝的区别,有什么危害(我说的线程安全问题,小哥哥提示析构的时候有什么影响)
6.C++内存分区情况介绍(代码区、常量区等)
7.初始化顺序
给一段代码,问构造的顺序是什么?析构的顺序是什么?
c++11中线程,哪些锁,如何提高锁的效率(有些线程安全的数据结构)
内联函数构造函数析构函数static函数可以是虚函数吗?
static关键字,static函数,static成员函数,static是否可以修改成员变量,static是什么时候定义的值,什么时候分配的内存,什么时候初始化,static成员函数在在大端序网络序, static 变量和全局变量的区别。
C++11新特性
右值引用
std::move是干什么的,原理是什么
什么是右值引用,什么是右值,右值如何变左值(move函数)
.C++的RVO机制了解吗(返回值优化)
智能指针,如果循环引用了应该怎么办。
我回答了智能指针,要求介绍四种智能指针 ,share_ptr的原理,weak_ptr的原理,auto的原理以及顶层的引用和修饰
介绍shared ptr和unique ptr以及适用场景。shared ptr是线程安全的吗?为什么不安全?那在多线程中使用shared ptr需要都加锁吗
深拷贝和浅拷贝分别是什么?std move是什么作用?移动拷贝函数呢?move过后的class还能用吗,用起来会有问题吗?
8. extern在c和c++中的作用?如何使用?extern c在c++中的原理?
如果要保留顶层的引用和修饰要用什么?decltype
shared_ptr ,循环引用问题
6. 函数调用的栈帧都有哪些东西?栈溢出是怎么回事?怎么利用?怎么阻止利用?怎么预防?
2.lambda怎么实现,C++怎么实现?
C++20里的协程,所以又问了我协程相关的东西,包括内核线程和用户态线程之类的。
语言区别:
C++继承的优缺点
C++支持多继承吗?多继承会有什么问题?如果避免菱形继承遇到的问题?(忘记虚继承了,哎)
面向对象与面向过程
C++和java的区别
C++和python的区别
C++和C的区别
c++的话将数据和函数以某种方式关联起来了, 实际上就是封装
c++相比C在布局以及存取时间上的额外开销主要是由virtual带来的,还有多继承。其他的并没有什么理由..
编译型语言和解释型语言
面向对象语言的特点
c++是线程安全的吗
垃圾回收的具体机制
编程题目
比较两个double值,有什么需要注意的
实现深度拷贝函数,并支持自定义拷贝
C++ 类指针赋为空,调用类函数会出现什么,为什么?
手写一个单例模式
手写一个智能指针
手写一个字符串拷贝函数
手写string类(要求把构造、析构、拷贝构造、拷贝赋值都写好,并考虑一些特殊条件如自我赋值)
写一个分配100个字节的函数,void meme(char** p),注意传进去的参数