随笔分类 - C++重点
摘要:# 99.如何在不使用额外空间的情况下,交换两个数?你有几种方法 ```C++ 1) 算术 x = x + y; y = x - y; x = x - y; 2) 异或 x = x^y;// 只能对int,char.. y = x^y; x = x^y; x ^= y ^= x; ``` 参考资料来
阅读全文
摘要:# 98.C++如何处理多个异常的? 1. C++中的异常情况: 语法错误(编译错误):比如变量未定义、括号不匹配、关键字拼写错误等等编译器在编译时能发现的错误,这类错误可以及时被编译器发现,而且可以及时知道出错的位置及原因,方便改正。 运行时错误:比如数组下标越界、系统内存不足等等。这类错误不易被
阅读全文
摘要:# 97.隐式转换,如何消除隐式转换? 1.C++的基本类型中并非完全的对立,部分数据类型之间是可以进行隐式转换的。所谓隐式转换,是指不需要用户干预,编译器私下进行的类型转换行为。很多时候用户可能都不知道进行了哪些转换 2.C++面向对象的多态特性,就是通过父类的类型实现对子类的封装。通过隐式转换,
阅读全文
摘要:# 96.说一下你理解的 ifdef endif代表着什么? 1.一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 2.
阅读全文
摘要:# 95.静态成员与普通成员的区别是什么? 1.生命周期 静态成员变量从类被加载开始到类被卸载,一直存在; 普通成员变量只有在类创建对象后才开始存在,对象结束,它的生命期结束; 2.共享方式 静态成员变量是全类共享;普通成员变量是每个对象单独享用的; 3.定义位置 普通成员变量存储在栈或堆中,而静态
阅读全文
摘要:# 94.全局变量和static变量的区别 C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。 全局变量和局部变量主要在作用域、定义位置、内存存储方式、生命期以及使用方式上存在明显的区别。 1.作用
阅读全文
摘要:# 93.定义和声明的区别 **如果是指变量的声明和定义:** 从编译原理上来说,声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存。而定义就是分配了内存。 **如果是指函数的声明和定义:** 声明:一般在头文件里,对编译器说:这里有一个函数叫function() 让编
阅读全文
摘要:# 92.当程序中有函数重载时,函数的匹配原则和顺序是什么? 多数情况下,我们可以很容易的判断出该会调用哪一个重载函数,例如,调用的重载函数之间形参数量不同,形参的类型有明显的区别等。但是,当几个重载函数形参数量相等、具有默认形参以及形参又可以发生类型转换时,判断会调用哪个重载函数就显得不那么明了。
阅读全文
摘要:# 91.你知道重载运算符吗? 1.我们只能重载已有的运算符,而无权发明新的运算符;对于一个重载的运算符,其优先级和结合律与内置类型一致才可以;不能改变运算符操作数个数; 2.两种重载方式:成员运算符和非成员运算符,成员运算符比非成员运算符少一个参数;下标运算符、箭头运算符必须是成员运算符; 3.引
阅读全文
摘要:# 90.cout和printf有什么区别? `cout` 和 `printf` 是 C++ 和 C语言中用于输出信息的函数,它们有以下区别: 1. 语法和用法: - `cout` 是 C++ 中的输出流对象,可以使用流操作符 `和basic_ostream。实现了char,wchar_t具体化;i
阅读全文
摘要:# 89.C++中类成员的访问权限和继承权限问题 - public的变量和函数在类的内部外部都可以访问。 - protected的变量和函数只能在类的内部和其派生类中访问。 - private修饰的元素只能在类内访问 派生类可以继承基类中除了构造/析构、赋值运算符重载函数之外的成员,这些成员的访问属
阅读全文
摘要:# 88.为什么模板类一般都是放在一个h文件中 1.模板定义很特殊。由template处理的任何东西都意味着编译器在当时不为它分配存储空间,它一直处于等待状态直到被一个模板实例告知。在编译器和连接器的某一处,有一机制能去掉指定模板的多重定义。 所以为了容易使用,几乎总是在头文件中放置全部的模板声明和
阅读全文
摘要:# 87.你知道printf函数的实现原理是什么吗? printf是[格式化输出](https://so.csdn.net/so/search?q=格式化输出&spm=1001.2101.3001.7020)可以自己定义输出的格式;printf(“%d\n”,a),其中" "之间的是格式说明串。%
阅读全文
摘要:# 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.向下类型转换 将基类指针或引用转换为派生类指针或引用被称为向下类型转换,向下类型转换不会自
阅读全文

浙公网安备 33010602011771号