摘要:
# 86.define、const、typedef、inline的使用方法?他们之间有什么区别? 一、const与#define的区别: 1. const定义的常量是变量带类型,而#define定义的只是个常数不带类型; 2. define只在预处理阶段起作用,简单的文本替换,而const在编译、链 阅读全文
摘要:
# 85.函数调用过程栈的变化,返回值和参数变量哪个先入栈? 1.将函数的参数压入栈中。参数的压入顺序与调用约定有关,可以是从右到左,也可以是从左到右。而在大多数C/C++编译器中,在函数调用的过程中,函数的参数是 ***\*由右向左\****入栈的; 2.将当前函数的返回地址压入栈中。返回地址是指 阅读全文
摘要:
# 84.结构体变量比较是否相等 ## 1.重载了 “==” 操作符 ```C++ #include using namespace std; struct foo { int a; int b; foo(int a, int b) { this->a = a; this->b = b; } // 阅读全文
摘要:
# 83.说一说你理解的内存对齐以及原因 ## 1.什么是内存对齐?? 内存对齐可以提高CPU的内存访问效率,因为CPU在读取内存时是按照一块一块的方式进行读取,每块的大小由内存读取粒度确定,通常为2、4、8或16个字节。 1.硬件存储和读取 一个内存是由若干个黑色的内存颗粒构成的。每一个内存颗粒叫 阅读全文
摘要:
# 82.函数指针? 函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型。函数的类型由它的返回类型和形参类型共同决定,与函数名无关。例如: ```C++ //比较两个string对象的长度 bool lengthCompare(const string&, const strin 阅读全文
摘要:
# 81.知道C++中的组合吗?它与继承相比有什么优缺点吗? ## 1.继承 继承是Is a 的关系,比如说Student继承Person,则说明Student is a Person。继承的优点是子类可以重写父类的方法来方便地实现对父类的扩展。 继承的缺点有以下几点: ①父类的内部细节对子类是可见 阅读全文
摘要:
# 80.继承机制中对象之间如何转换?指针和引用之间如何转换? ## 1.向上类型转换 将派生类指针或引用转换为基类的指针或引用被称为向上类型转换,向上类型转换会自动进行,而且向上类型转换是安全的。 ## 2.向下类型转换 将基类指针或引用转换为派生类指针或引用被称为向下类型转换,向下类型转换不会自 阅读全文
摘要:
# 79.如果想将某个类用作基类,为什么该类必须定义而非声明? 派生类中包含并且可以使用它从基类继承而来的成员,为了使用这些成员,派生类必须知道他们是什么。 所以必须定义而非声明。 参考资料来源: 阿秀 阅读全文
摘要:
# 78.类如何实现只能静态分配和只能动态分配 1.前者是把new、delete运算符重载为private属性。后者是把构造、析构函数设为protected属性,再用子类来动态创建 2.建立类的对象有两种方式: ① 静态建立,例如 A a; 静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。 阅读全文
摘要:
# 77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗? 1.指针参数传递本质上是值传递,它所传递的是一个地址值。 值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身)。 值传递的特点是 阅读全文