w3周日__继续思考昨晚未尽的疑问(指针vs引用)

这波要针对上篇分析里 标红的问题(成员变量用 T,T&啥情况)继续思考,

要学习以下材料:

  1. 知乎上:用指针还是引用

  2. StackOverflow上的相关问题

https://stackoverflow.com/questions/12728794/why-should-i-use-reference-variables-at-all

  3. Google:  What  is reference in Memory ;   When to use it;

4. String类型好像很特殊。

———————————   解决这波疑问后,对照 jack-compiler里的 data实体定义、函数接口传递形式  分析下,看看是否合理。

(然后这个问题就算完成。

娱乐一把:看《寻梦环游记》。

下一波思考:自己想着写my-jack。 这项目必须在 week-4内完成(辞职满一个月)。 )

原文地址:https://www.cnblogs.com/nanlan2017/p/9191936.html

时间: 2024-11-08 23:32:53

w3周日__继续思考昨晚未尽的疑问(指针vs引用)的相关文章

由指针和引用的区别引发的思考

指针和引用一直在用,但是却从来没有仔细思考过他们真正的区别在哪里,一直都是照本宣科的理解,引用就是变量的别名,引用确定后就不能修改,原因是什么呢? 现在就来弄清楚事情的真相, 区别究竟在哪里? 下面这段话应该可以从本质上来解释指针和引用的区别 程序在编译的时候分别将指针和引用添加到符号表上, 符号表上记录的是变量,以及变量所对应的地址, 指针变量在符号表上对应的地址为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值, 符号表生成后就不会再改,因此指针可以改变其指向的变量地址. 而

【设计模式总结】对常用设计模式的一些思考(未完待续。。。)

前言 在[Java设计模式]系列中,LZ写了十几篇关于设计模式的文章,大致是关于每种设计模式的作用.写法.优缺点.应用场景. 随着LZ自身的成长,再加上在工作中会从事一定的架构以及底层代码设计的原因,在近半年的实践中,对于设计模式的理解又有了新的认识,因此有了此文,目的是和网友朋友们分享自己对于设计模式的一些思考.LZ本人水平有限,抛砖引玉,写得不对的地方希望网友朋友们指正,也可留言相互讨论. 简单工厂模式 首先是简单工厂模式. 对于简单工厂模式的作用描述,LZ当时是这么写的: 原因很简单:解耦

w3周日__C++里有太多微妙到蛋疼的细节。比如构造函数也能搞这么多幺蛾子

?问题提出 主要是在VC++ 2015里经常提示莫名其妙的编译错误. 分析一下,为什么Java里构造函数这个问题很简单: 1. C++里对象类型不止有按引用传递,还可能拷贝传递.所以有时候得提供拷贝构造函数.(这与 重载赋值运算符= 貌似目的是一样的?都是为了能根据1个instance构造第2个instance) 如果没显式自定义一个拷贝构造函数,那么编译器默认提供的是"浅拷贝".所以:当成员变量含对象的指针类型时,必须重写拷贝构造函数.--> 重写几乎成了必然? 2. C++里

程序的思考之一个可以检验你指针理解功力的程序

希望结果可以不让你大吃一惊哟!小程序也可以大智慧的! #include<iostream> using namespace std; int main() { double* (*a)[3][6]; cout<<sizeof(a)<<endl; //4 a就是一个数组指针32位下是4字节 cout<<sizeof(*a)<<endl; // 72 *a就是数组整体 cout<<sizeof(**a)<<endl; // 2

Objective-C:内存管理

1 传统内存管理 Objective-C对象的生命周期可以分为:创建.存在.消亡. 1.1 引用计数 类似Java,Objective-C采用引用计算(reference counting)技术来管理对象的生命周期.每个对象都定义有一个整数(称引用计数器)与之相关联,该数用以表示当前有多少个指针指向该对象. 1.1.1 操作方法 当某段代码需要访问一个对象时,该代码就将对象的保留计数值加1:当结束访问时就减1:若引用计数器减到0时,该对象将被销毁.引用计数器的值由如下三种操作进行控制: 创建 当

(转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考

昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"<<endl; } virtual void printB() { cout<<"printB"<<endl; } }; main函数调用: D *d=NULL; d->printA(); d->printB(); 输出结果是? 当时想的是对象d直

【转】腾讯高级工程师:一道面试题引发的高并发性能调试思考

https://dbaplus.cn/news-21-625-1.html 这样打破沙锅问到底的精神十分可贵!注意其中用到的工具 4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?(知乎原贴地址如下:https://www.zhihu.com/question/43416744) 遗憾的是知乎很多答案在抨击这道题本身的正确性,虽然我不是这次的面试官,但我认为这是一道非常好的面试题.当然,只是道加分题,

c++中函数中变量内存分配以及返回指针、引用类型的思考

众所周知,我们在编程的时候经常会在函数中声明局部变量(包括普通类型的变量.指针.引用等等). 同时,为了满足程序功能的需要,函数的返回值也经常是指针类型或是引用类型,而这返回的指针或是引用也经常指向函数中我们自己声明的局部变量. 这样,程序在某些情况下就可能存在一定的问题.看似很简单的问题,通过仔细的分析,我们就能够更好的理解c++中内存分配和释放的问题. 好,废话不多说,我们进入正题.首先,简单介绍一下程序的内存区域的分配: 程序的内存分配 ①堆区(heap).这一部分主要是由程序开发人员自己

java中传值及引伸深度克隆的思考(说白了Java只能传递对象指针)

java中传值及引伸深度克隆的思考 大家都知道java中没有指针.难道java真的没有指针吗?句柄是什么?变量地址在哪里?没有地址的话简直不可想象! java中内存的分配方式有两种,一种是在堆中分配,一种是在堆栈中分配,所有new出来的对象都是在堆中分配的,函数中参数的传递是在栈中分配的.通常情况下堆的内存可以很大,比如32位操作系统中的虚拟内存都可以被堆所使用(当内存紧张的时候甚至硬盘都可以是堆的存储空间),而堆栈的内存分配是有限的. 这和c++中内存分配差不多(c++中还要有另一种方式用于全