C++基础
文章平均质量分 66
麓山脚下胖头鱼
这个作者很懒,什么都没留下…
展开
-
C++中虚函数表在内存中的位置
同样的一份代码在VS 2019和Dev C++上跑起来的结果并不很相似,最大的区别就是vs中类大小为20字节,而dev中类大小为16字节,我猜想这是编译器优化的原因。从如下代码及运行结果来看,虽然细节上有一些出入,但是可以看出,在windows环境下,虚表存放的地址与全局变量、静态变量存储的位置很接近,换句话说,虚表就是存储在程序的数据段中。此外可以看出,即使一个类声明了多个对象,但是他们的虚表指针指向的地址都是一样的,也就是说,同一个类只会有一张虚表Dev C++#include<iostre原创 2021-09-08 12:03:14 · 963 阅读 · 0 评论 -
浅析C++中struct和class的区别
文章目录C和C++中struct的区别C++中struct和class的区别C和C++中struct的区别struct最早是在C语言中出现的,但在C语言中struct只是一种 用户自定义数据类型(UDT) ,其只能定义数据成员,为了保证兼容性,C++保留了C语言中struct的用法,但在C++中struct是一种 抽象数据类型(ADT) ,同时也对其进行了一些拓展。C语言中struct不可声明成员函数,在C++中可以C语言中struct不可以声明静态成员,在C++中可以C语言中struct的访问控原创 2021-08-09 01:29:40 · 172 阅读 · 0 评论 -
浅析深拷贝和浅拷贝
浅拷贝和深拷贝拷贝即赋值,把一个对象拷贝给另一个对象,即是用一个对象的值赋值给另一个对象。对于普通的值拷贝,其实并没有深拷贝和浅拷贝的区别(或者可以把这类的拷贝都认为是深拷贝):int a, b;a = 21;b = a;对于深拷贝和浅拷贝,最直接的理解就是看有没有 对需要被赋值的对象开辟属于自己的内存空间 。为什么这么说呢?因为浅拷贝只是增加了一个指向原有的内存的指针,并将这个指针赋值给新对象,这种情况下,当原对象的指针对所指向内存空间的值做修改时,新对象中指针所指向的值也会被修改。而深拷贝则原创 2021-08-08 16:57:04 · 105 阅读 · 0 评论 -
移动构造函数、移动赋值运算符 和 拷贝构造函数、拷贝赋值运算符的区别
移动构造函数和拷贝构造函数的移动构造函数 和 移动赋值运算符 是C++11新引进的特性。在C++11以前,对象的拷贝主要由三个函数控制: 拷贝构造函数 、 拷贝赋值运算符 、 析构函数 。在C++11引入了 移动构造函数 和 移动赋值运算符 两个函数。 A(A& exp)//拷贝构造函数 { if(exp.array!=nullptr) { int len = strlen(exp.array); a原创 2021-08-08 15:03:19 · 860 阅读 · 0 评论 -
C++三个重要关键字
C++三个重要关键字1. static关键字信息来源1 信息来源2静态变量用法: 在变量前加上 static 关键字,变量就变成了一个静态变量存储位置: 静态存储区,在程序的整个运行期间都存在初始化: 未经初始化的全部静态变量都会被初始化为0((对于自由变量初始化的值是任意的,除非是显式的初始化)作用域: static 不会改变变量的作用域全局静态变量:作用域仍为全局作用域,全局静态变量在声明他的文件之外不可见,也就是说是在定义之处起,到文件结尾局部静态变量:作用原创 2021-07-30 16:02:33 · 234 阅读 · 0 评论 -
C++类与虚函数
一、 类类成员属性C++通过 public 、 protect 、 private 三个关键字来控制成员变量和成员函数的访问权限。成员访问权限:public: 在类内部可以互相访问,没有权限限制,在类外可以通过实例化对象进行访问。protect: 在类内部可以互相访问,没有权限限制。在类外无法通过实例化对象访问累得protect成员,但可以通过友元函数和友元类进行访问。private: 在类内部可以互相访问,没有权限限制。在类外无法通过实例化对象访问累得protect成员,但可以通过友元函数.原创 2021-07-30 20:36:58 · 569 阅读 · 0 评论