随笔分类 - C++重点
摘要:# 119.模板会写吗?写一个比较大小的模板函数 本程序适合char、int、float类型数据进行比较,差距小于0.01视为相等 ```C++ #include #include using namespace std; //本程序适合char、int、float类型数据进行比较,差距小于0.01
阅读全文
摘要:# 118.main函数的返回值有什么值得考究之处吗? main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。 ## 1.void main() 有一些书上的,都使用了void main( ) ,其实这是错误的。C
阅读全文
摘要:# 117.你知道Debug和Release的区别是什么吗? 1.调试版本(Debug),包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员调试。Debug模式下生成两个文件,除了.exe或.dll文件外,还有一个
阅读全文
摘要:# 116.如何禁止程序自动生成拷贝构造函数? ##### 1.为了阻止编译器默认生成拷贝构造函数和拷贝赋值函数,我们需要手动去重写这两个函数,某些情况下,为了避免调用拷贝构造函数和拷贝赋值函数,我们需要将他们设置成private,防止被调用。 ###### 1.1手动重写这两个函数 在C++中
阅读全文
摘要:# 115.如何阻止一个类被实例化?有哪些方法? 1.将类定义为抽象基类或者将构造函数声明为private; 将类定义为抽象类:抽象类是不能被实例化的,只能被继承。通过将类定义为抽象类,可以防止该类被实例化。 ```C++ class AbstractClass { public: virtual
阅读全文
摘要:# 114.你知道数组和指针的区别吗? 1.数组在内存中是连续存放的,开辟一块连续的内存空间;数组所占存储空间:sizeof(数组名);数组大小:sizeof(数组名)/sizeof(数组元素数据类型); 2.用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的
阅读全文
摘要:# 113.将引用作为函数参数有哪些好处? 1.传递引用给函数与传递指针的效果是一样的。 这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。 2.使用引用传递函数的参数,在内存中并没有产生实参的副本
阅读全文
摘要:# 112.说一说strcpy、sprintf与memcpy这三个函数的不同之处 1.复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。 2.复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出
阅读全文
摘要:# 111.在进行函数参数以及返回值传递时,可以使用引用或者值传递,其中使用引用的好处有哪些? 对比值传递,引用传参的好处: 1)在函数内部可以对此参数进行修改 2)提高函数调用和运行的效率(因为没有了传值和生成副本的时间和空间消耗) 如果函数的参数实质就是形参,不过这个形参的作用域只是在函数体内部
阅读全文
摘要:# 110.成员初始化列表会在什么时候用到?它的调用过程是什么? 1.当初始化一个引用成员变量时; ```C++ struct MyClass { const int mya; int& myb; MyClass(int a, int& b) :mya(a), myb(b) {} ~MyClass(
阅读全文
摘要:# 109.怎么快速定位错误出现的地方? 1.如果是简单的错误,可以直接双击错误列表里的错误项或者生成输出的错误信息中带行号的地方就可以让编辑窗口定位到错误的位置上。 2.对于复杂的模板错误,最好使用生成输出窗口。 多数情况下出发错误的位置是最靠后的引用位置。如果这样确定不了错误,就需要先把自己写的
阅读全文
摘要:# 108.如何设计一个计算仅单个子类的对象个数? 1.为类设计一个static静态变量count作为计数器; 2.类定义结束后初始化count; 3.在构造函数中对count进行+1; 4.设计拷贝构造函数,在进行拷贝构造函数中进行count +1,操作; 5.设计赋值构造函数,在进行赋值函数中对
阅读全文
摘要:# 107.你知道静态绑定和动态绑定吗?讲讲? 1.对象的静态类型:对象在声明时采用的类型。是在编译期确定的。 2.对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。 3.静态绑定:绑定的是对象的静态类型,某特性(比如函数依赖于对象的静态类型,发生在
阅读全文
摘要:# 106.你什么情况用指针当参数,什么时候用引用,为什么? ## 1.使用引用参数的主要原因有两个 1.程序员能修改调用函数中的数据对象 2.通过传递引用而不是整个数据–对象,可以提高程序的运行速度 ## 2.一般的原则 1.对于使用引用的值而不做修改的函数: (1)如果数据对象很小,如内置数据类
阅读全文
摘要:# 105.你知道const char* 与string之间的关系是什么吗? 1.string 是C++标准库里面其中一个,封装了对字符串的操作,实际操作过程我们可以用const char*给string类初始化 2.三者的转化关系如下所示: ```C++ a) string转const char*
阅读全文
摘要:# 104.C++中标准库是什么? ## 1.C++ 标准库可以分为两部分: 1.1标准函数库: 这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。 输入/输出 I/O、字符串和字符处理、数学、时间、日期和本地化、动态分配、其他、宽字符函数 ``` * 输入输出流:`` 头
阅读全文
摘要:# 103.如果有一个空类,它会默认添加哪些函数? ```C++ 1) Empty(); // 缺省构造函数// 2) Empty( const Empty& ); // 拷贝构造函数// 3) ~Empty(); // 析构函数// 4) Empty& operator=( const Empty
阅读全文
摘要:# 102.volatile关键字的作用? volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。声明时语法:int vo
阅读全文
摘要:# 101.程序在执行int main(int argc, char *argv[])时的内存结构,你了解吗? 参数的含义是程序在命令行下运行的时候,需要输入argc 个参数,每个参数是以char 类型输入的,依次存在数组里面,数组是 argv[],所有的参数在指针char * 指向的内存中,数组的
阅读全文
摘要:# 100.你知道strcpy和memcpy的区别是什么吗? 1.复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。 2.复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根
阅读全文

浙公网安备 33010602011771号