随笔分类 -  C++重点

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
摘要:# 5.C++中类的数据成员和成员函数内存分布情况 - 非静态成员的数据类型大小之和。 - 编译器加入的额外成员变量(如指向虚函数表的指针)。 - 为了边缘对齐优化加入的padding。 空类(无非静态数据成员)的对象的size为1, 当作为基类时, size为0。 C++类是由结构体发展得来的,所 阅读全文
posted @ 2023-08-02 21:49 CodeMagicianT 阅读(424) 评论(0) 推荐(0)
摘要:# 4.可以说一下你了解的C++得内存管理吗? ## 1.一个由c/C++编译的程序占用的[内存](https://so.csdn.net/so/search?q=内存&spm=1001.2101.3001.7020)分为以下几个部分: C++中的内存分区,分别是堆、栈、自由存储区、全局/静态存储区 阅读全文
posted @ 2023-08-02 21:47 CodeMagicianT 阅读(91) 评论(0) 推荐(0)
摘要:# 3.什么是内存池,如何实现 内存池(Memory Pool) 是一种**内存分配**方式。通常我们习惯直接使用new、malloc 等申请内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相 阅读全文
posted @ 2023-08-02 21:46 CodeMagicianT 阅读(162) 评论(0) 推荐(0)
摘要:# 2.简要说明C++的内存分区 ## 1.一个由C/C++编译的程序占用的[内存](https://so.csdn.net/so/search?q=内存&spm=1001.2101.3001.7020)分为以下几个部分: C++中的内存分区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区和 阅读全文
posted @ 2023-08-02 21:46 CodeMagicianT 阅读(102) 评论(0) 推荐(0)
摘要:# 1.类的对象存储空间? - 非静态成员的数据类型大小之和。 - 编译器加入的额外成员变量(如指向虚函数表的指针)。 - 为了边缘对齐优化加入的padding。 空类(无非静态数据成员)的对象的size为1, 当作为基类时, size为0。 C++类是由结构体发展得来的,所以他们的成员变量(C语言 阅读全文
posted @ 2023-08-02 21:43 CodeMagicianT 阅读(113) 评论(0) 推荐(0)
摘要:# 134.为什么C++没有垃圾回收机制?这点跟Java不太一样 1. 性能:垃圾回收机制需要额外的内存和计算资源,这会引入一定的开销。C++的设计目标之一是提供高效的性能,垃圾回收机制可能会对程序的性能产生负面影响。因此,C++没有内置的垃圾回收机制,以便程序员自行管理内存等资源。 2. 控制:C 阅读全文
posted @ 2023-08-02 21:41 CodeMagicianT 阅读(199) 评论(0) 推荐(0)
摘要:# 133.为什么不能把所有的函数写成内联函数? 内联函数以代码复杂为代价,它以省去函数调用的开销来提高执行效率。所以一方面如果内联函数体内代码执行时间相比函数调用开销较大,则没有太大的意义;另一方面每一处内联函数的调用都要复制代码,消耗更多的内存空间,因此以下情况不宜使用内联函数: - 函数体内的 阅读全文
posted @ 2023-08-02 21:40 CodeMagicianT 阅读(84) 评论(0) 推荐(0)
摘要:# 132.delete和delete[]区别? - delete只会调用一次析构函数。 - delete[]会调用数组中每个元素的析构函数。 阅读全文
posted @ 2023-08-02 21:40 CodeMagicianT 阅读(30) 评论(0) 推荐(0)
摘要:# 131.介绍一下几种典型的锁 **读写锁** - 多个读者可以同时进行读 - 写者必须互斥(只允许一个写者写,也不能读者写者同时进行) - 写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者) **互斥锁** 一次只能一个线程拥有互斥锁,其他线程只有等待 互斥锁是在抢锁失败的情况 阅读全文
posted @ 2023-08-02 21:40 CodeMagicianT 阅读(77) 评论(0) 推荐(0)
摘要:# 130.hello.c 程序的编译过程 以下是一个 hello.c 程序: ```C++ #include int main() { printf("hello, world\n"); return 0; } ``` 在 Unix 系统上,由编译器把源文件转换为目标文件。 ``` gcc -o 阅读全文
posted @ 2023-08-02 21:39 CodeMagicianT 阅读(97) 评论(0) 推荐(0)
摘要:# 129.动态编译与静态编译 ## 1.静态编译 静态编译是将程序代码和库函数一起编译成一个可执行文件的过程。在静态编译过程中,程序代码和库函数的代码被组合在一起,形成一个独立的可执行文件,该文件可以在任何系统上运行,因为它包含了所有所需的代码和库函数。 ### 1.1优点: 1.程序在运行时不需 阅读全文
posted @ 2023-08-02 21:39 CodeMagicianT 阅读(471) 评论(0) 推荐(0)
摘要:# 128.用C语言实现C++的继承 ```C++ #include using namespace std; //C++中的继承与多态 struct A { virtual void fun() //C++中的多态:通过虚函数实现 { cout fun(); //调用父类的同名函数 p1 = &b 阅读全文
posted @ 2023-08-02 21:38 CodeMagicianT 阅读(91) 评论(0) 推荐(0)
摘要:# 127.友元函数和友元类的基本情况 友元提供了不同类的成员函数之间、类的成员函数和一般函数之间进行数据共享的机制。通过友元,一个不同函数或者另一个类中的成员函数可以访问类中的私有成员和保护成员。友元的正确使用能提高程序的运行效率,但同时也破坏了类的封装性和数据的隐藏性,导致程序可维护性变差。 阅读全文
posted @ 2023-08-02 21:38 CodeMagicianT 阅读(33) 评论(0) 推荐(0)
摘要:# 126.友元函数在类内部声明还是内外? 友元函数不一定要在类内声明,普通的友元函数可以在类外声明,也可以在类内声明。 只有友元工厂才必须用到类内声明友元函数。 友元函数可以在类的内部声明,也可以在类的外部声明。 1.如果友元函数是在类的内部声明的,那么它可以直接访问类的私有成员和保护成员,即使这 阅读全文
posted @ 2023-08-02 21:37 CodeMagicianT 阅读(688) 评论(0) 推荐(0)
摘要:# 125.C++从代码到可执行程序经历了什么? ## 1.预编译 主要处理源代码文件中的以“#”开头的预编译指令。处理规则见下: 1. 删除所有的#define,展开所有的宏定义。 2. 处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。 阅读全文
posted @ 2023-08-02 21:37 CodeMagicianT 阅读(45) 评论(0) 推荐(0)
摘要:# 124.什么是一致性哈希? **一致性哈希** 一致性哈希是一种哈希算法,就是**在移除或者增加一个结点时,能够尽可能小的改变已存在key的映射关系** 尽可能少的改变已有的映射关系,一般是沿着顺时针进行操作,回答之前可以先想想,真实情况如何处理 一致性哈希将整个哈希值空间组**织成一个虚拟的圆 阅读全文
posted @ 2023-08-02 21:36 CodeMagicianT 阅读(114) 评论(0) 推荐(0)
摘要:# 123.你知道回调函数吗?它的作用? 1.当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数; 2.回调函数就相当于一个中断处理函数,由系统在符合你设定的条件时自动调用。为此,你需要做三件事:1,声明;2,定义;3,设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数 阅读全文
posted @ 2023-08-02 21:32 CodeMagicianT 阅读(311) 评论(0) 推荐(0)
摘要:# 122.成员函数里memset(this,0,sizeof(*this))会发生什么 有时候类里面定义了很多int,char,struct等c语言里的那些类型的变量, 可以在构造函数中将它们初始化为0,但是一句句的写太麻烦,所以直接就memset(this, 0, sizeof (*this)) 阅读全文
posted @ 2023-08-02 21:31 CodeMagicianT 阅读(133) 评论(0) 推荐(0)
摘要:# 121.static_cast比C语言中的转换强在哪里? 1. 更加类型安全:`static_cast`在执行类型转换之前会进行类型检查,如果转换不可行,编译时会产生错误或警告。这有助于及早发现潜在的错误并进行修复,而不是在运行时出现未定义的行为。 2. 适用于指针和引用:`static_cas 阅读全文
posted @ 2023-08-02 21:30 CodeMagicianT 阅读(196) 评论(0) 推荐(0)
摘要:# 120.strcpy函数和strncpy函数的区别?哪个函数更安全? 1.函数原型 ```C++ char* strcpy(char* strDest, const char* strSrc) char *strncpy(char *dest, const char *src, size_t n 阅读全文
posted @ 2023-08-02 21:27 CodeMagicianT 阅读(995) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页