在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
虚函数表在有虚函数的类中,存在一个虚函数指针,该指针指向一张虚函数表,当子类继承基类的时候,也会继承其虚函数表。当子类重写基类中的虚函数时,会将虚函数表中的地址替换成重写的函数地址。 char* 和 char[] 的区别
以上两种定义方式直接输出结果,则都能正常输出。但修改 \(s1\) 的内容会引起程序崩溃,而修改 \(s2\) 的内容不会。 因为 \(abc\) 是保存在常量区内,而第一种方式是利用指针直接指向常量区,第二种方式是通过数组将 \(abc\) 复制出来,存储在栈区内,所以修改 \(s2\) 的值不会崩溃而修改 \(s1\) 的值会。 \(C\)++ 程序内存结构\(C\)++ 程序的内存分区自低地址至高地址分别分为 代码区、常量区、静态(全局)存储区、自由存储区、堆区、栈区。
\(C\)++ 中常量定义常量有两种方法,第一种是使用 \(define\) 定义,另一种是通过 \(const\) 修饰,常量不可被修改。全局对象存放在静态区内,局部对象存放在栈区内。 \(const\) 关键字作用
其中 \(const\) 修饰的分别是 \(*a\) 和 \(b\),那么对于 \(a\) 而言,可以修改 \(a\) 的指向,而不能修改 \(*a\) 所指向的值,对于 \(b\) 而言,可以修改 \(*b\) 所指的值,而不能修改 \(b\) 的指向。 为什么函数参数入栈顺序从右到左为了支持 不定长参数函数
如果是从左到右入栈,\(num\) 变量将在栈底,而不定长参数需要这个 \(num\) 来确定元素的个数,在栈底自然是取不出来的。所以通过从右向左入栈,可以获得不定长参数的长度。 \(C98\) 和 \(C11\) 中的枚举\(C98\) 中的枚举是不限定作用域的
\(C11\) 中引入了强类型枚举,是限定作用域的
强类型转换的优点在于
宏定义和枚举的区别
空类如果一个空类不被使用,则在编译器什么也不做。 但空类还是带着一些默认的函数,这些函数只有被使用的时候才会产生,主要是六个函数
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论