C++
朱涵友
这个作者很懒,什么都没留下…
展开
-
C++合成默认构造函数的真相
对于C++默认构造函数,我曾经有两点误解: 类如果没有定义任何的构造函数,那么编译器(一定会!)将为类定义一个合成的默认构造函数。合成默认构造函数会初始化类中所有的数据成员。 第一个误解来自于我学习C++的第一本书 《C++ Primer》,在书中392页:“只有当一个类没有定义构造函数时,编译器才会自动生成一个默认构造函数”。 实际上这句话也没有说错,它说明了默认构造函数定转载 2017-02-25 11:27:40 · 547 阅读 · 0 评论 -
初始化与赋值之间的区别
由于在内置类型中,初始化和赋值不进行区分并不会造成很大的影响,所以让我很大程度上忽略了他们的差别。 直到C++primer中对于构造函数提出了一句话,构造函数有一个初始化部分和一个函数体,在一个构造函数中,成员的初始化是在函数体执行之前完成的,且按照它们在类中出现的顺序进行初始化。让我第一次开始思考初始化和赋值操作之间的区别。 实际上,我们要注意很重要的一点,我们平时的对于构造转载 2017-02-25 13:45:28 · 1514 阅读 · 0 评论 -
c++ static的作用,以及static对象在类和函数中区别
static对象如果出现在类中,那么该对象即使从未被使用到,它也会被构造以及析构。而函数中的static对象,如果该函数从未被调用,这个对象也就绝不会诞生,但是在函数每次被调用时检查对象是否需要诞生。 下面详细说说static的功能以及它的来龙去脉: static作为编程语言里面一种重要的数据类型,它的地位在面试的过程里也是相当的高。 为什么要引入static转载 2017-02-25 15:03:49 · 324 阅读 · 0 评论 -
C++:堆与栈区别
C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区 文章来自一个论坛里的回帖,哪个论坛记不得了! 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态 存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量 的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那转载 2017-03-08 20:37:56 · 450 阅读 · 0 评论 -
C++中的friend详细解析
C++中的友元机制允许类的非公有成员被一个类或者函数访问,友元按类型分为三种:普通非类成员函数作为友元,类的成员函数作为友元,类作为友元。友元包括友元的声明以及友元的定义。友元的声明默认为了extern,就是说友元类或者友元函数的作用域已经扩展到了包含该类定义的作用域,所以即便我们在类的内部定义友元函数也是没有关系的。 友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被转载 2017-03-10 17:14:59 · 1037 阅读 · 0 评论