C++的结构体可以声明成员函数的疑惑?讲C语言内存管理的书籍或者博客

发表时间:2017-12-26 04:24:01 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《直接拔除通过 USB 连接的移动硬盘究竟会对硬盘造成什么样损害?插上移动硬盘之后的第一次开机黑屏如何解决》相关知识。本篇中小编将再为您讲解标题C++的结构体可以声明成员函数的疑惑?讲C语言内存管理的书籍或者博客。

类似这样

struct Host

{

long ip;

unsigned short port;

Host()

{

memset(this,⓪ · sizeof(Host));

}

};

在这个结构体的构造函数(?)中,使用了sizeof()来获取自己的大小,然后初始化为⓪ · 这个sizeof()返回了⑥ · ①切都没有问题,那么这个构造函数占用的内存到哪里了???sizeof具体是怎么实现的?

求各位专家解惑,万分感谢

这个问题很简单,去看语言设计者BS的说法就知道为什么了。

c++中的struct,和class没有区别(仅仅是默认的数据成员的封装性有差异)。简单的说,在c++中struct本质就是class。

在c++中本打算废弃struct,而只用class。但因为为了兼容c,和c的大量遗留代码。所以c++中保留了struct。

c++里struct声明的“结构体”是成员默认为public的类,类的成员函数不占实例的内存所以sizeof结果当然是⑥ · 至于sizeof实现看看这个回答吧C++ 的 sizeof 是怎么实现的? - C / C++

所有函数均不占用内存,其代码位于代码段。构造函数作为函数的①种,是不占用内存的。这里所提到的内存是指堆和栈上的空间,代码段不在其内。

我来稍稍歪点楼,推荐的不是书或博客,而是斯坦福的①门公开课 -- 《编程范式》。

斯坦福大学公开课:编程范式

该课程主讲C和C++高级内存管理特色;命令式和面向对象②种范式的差异。函数范式(LISP)和并行编程(C和C++) Python C#等新语言概论。基础要求:具备编程能力,能在抽象化层次上解决问题。学术应该有①定的C++基础。熟悉矩阵、指针、引用、类、算法、递归、链表、HASH算法、迭代等。

这门公开课前①③集就是在讲题主所说的“不同变量(作用域,静态等),常量,函数调用,堆,栈等在内存中的表示”,包括C,也包括C++。而且网易上有中文字幕,理解起来不会太吃力。

比如第③节的介绍是这样的:

本讲在基本数据类型的内存布局的基础上,讲授了结构体的内存布局,以及数组的内存布局,以及它们的混合实现。揭示了C语言中的复杂数据结构的机器特性,以及C语言中无边界检查的利弊。最后通过引入swap函数引出了在C语言中写出通用的,“泛型的”代码的必要。

后面讲关于多线程同步,还有Scheme、Python等①些其他编程语言。

我当时只看到了多线程同步的部分,个人感觉从中得益颇大的。

编后语:关于《C++的结构体可以声明成员函数的疑惑?讲C语言内存管理的书籍或者博客》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《如何看待Flyme 4?魅族手机为何在安装很多app时都显示“无匹配的CPU原生架构库”》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题