c++学习
c++学习专栏
LQB梦烦了
这个作者很懒,什么都没留下…
展开
-
c++内存管理
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈存放局部变量,效率高,但空间有限,可自动释放堆new分配的内存块,需要手动释放自由存储区由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。全局/静态存储区全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。常量存储区这是一块比较特殊的存储区,他们里原创 2020-07-23 10:55:28 · 126 阅读 · 0 评论 -
为什么构造函数不能是虚函数?析构函数可以是虚函数吗?
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。抽象类中构造和析构均不能使用纯虚函数。为什么构造函数不能声明为虚函数呢?1、构造一个对象的时候,必须知道对象的实际类型,而虚函数是在运行期间确定实际类型的。如果构造函数为虚函数,则在构造一个对象时,由于对象还未构造成功,编译器还无法知道对象的实际类型,是该类本身还是派生类。无法确定。2、虚函数的执行依赖于虚函数表,而虚函数表是在构造函数中初始化的,即初始化vptr,让它指向虚函数表。如果构造函数为虚函数,则在构造原创 2020-07-10 10:56:32 · 5492 阅读 · 1 评论 -
纯虚函数和抽象类
1、纯虚函数与抽象类C++中的纯虚函数(或抽象函数)是我们没有实现的虚函数!我们只需声明它!通过声明中赋值0来声明纯虚函数!纯虚函数:没有函数体的虚函数class Test { // Data members of class public: // Pure Virtual Function virtual void show() = 0; /* Other members */}; 抽象类:包含纯虚函数的类#include<原创 2020-07-10 10:33:16 · 166 阅读 · 0 评论 -
c++ 类大小计算
先给出总结:空类的大小为1字节 一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间。 对于包含虚函数的类,不管有多少个虚函数,只有一个虚指针,vptr的大小。 普通继承,派生类继承了所有基类的函数与成员,要按照字节对齐来计算大小 虚函数继承,不管是单继承还是多继承,都是继承了基类的vptr。(32位操作系统4字节,64位操作系统 8字节)! 虚继承,继承基类的vptr。1、原则1空类的大小为1字节。#include<iostream&g原创 2020-07-10 10:00:49 · 264 阅读 · 0 评论 -
c++ 中的inline用法
1、引入 inline 关键字的原因在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。实例#include <stdio.h>//函数定义为inline即:内联函数inline char..原创 2020-07-09 14:47:27 · 149 阅读 · 0 评论