C++ Class 内存

Abstract

最近在看侯捷C++面向对象高级开发(上)。讲的非常好。感兴趣的小伙伴可以去看看。
在课程中:侯捷老师讲了基础的C++ with class。这里我把与内存有关的知识点记录下了。(因为我感觉挺有意思的)。

Class in memory

侯捷老师说:OOP中有一个特性是数据封装。Class把数据封装了起来,并创建了相应的函数来操作数据。在C++里,Class创造出来的实例里:数据有多分,函数只有一份。
其实这也就是我们期望的。
在这里插入图片描述


new and delete

如下图:
在这里插入图片描述
为此:我在Visual Studio上得到了验证:
在这里插入图片描述

在这里插入图片描述
正如上图看见的:new 的确是先operator new,再执行构造函数。但是delete我却没有发现。其中我百度了scalar deleting destructor

scalar deleting destructor代表对象的析构函数代理;对应的delete A;
 'vector deleting destructor'代表对象数组的析构函数代理; 对应的delete [] A;

我功力不够,没有完成验证成功。(ノへ ̄、).也许G++和GDB可以验证成功


delete 和 delete[]

在这里插入图片描述
正如上图所示:这就是delete和delete[]的区别所在了。验证过程很简单,就是在析构函数里cout<<“this is destructor”;就能验证成功了。


static in class

static in class 可以修饰 数据成员,也可以修饰函数成员。
如果是 static data member:
那么这个数据在所有由类创造的实例里:只有一份。
且像下面这样初始化并赋值(不知道初始化和赋值这样讲是不是对的,大概就是这个意思)

class foo{
	static int c;
}
static int c=0;

如果是static member function:
其他成员函数的参数都会带this,这个不带。为什么又static member function呢?用来处理static data member的。
调用static函数的方式:
① object调用
② 用过class name调用




reference:
①:侯捷C++面向对象高级开发(上)
②:‘scalar deleting destructor’ 和 'vector deleting destructor’的区别

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值