吃完饭继续来码字了 C++ 析构函数 传值,this指针

话说现在我已经习惯了这种生活,以前俺是中午不睡觉会死星人,现在感觉不睡觉也就是那样了,准备把自己的时间好好安排一下了,由于我是在培训班,所以每天的时间也很紧的,以前打算每天晚上更新博客的,现在看来实现不了了。我决定在每天中午,回顾前天学习的内容,并巩固上午所学的。我想这应该是我学习效率最高的方法了。在这感谢一下@奋斗的小歌谢谢你的鼓励,我想这将是我以后坚持不下去的动力,我会坚持的不就是6个月吗?加油!!

好了,废话不说了,进入今天的主题吧!

析构函数:就是用来释放对象的。c++中一切都是按对象来说的,但是对象里面也有成员变量,成员函数之类的,所以析构函数就是来释放对象所占的内存空间的。

析构函数的特点:无返回值,不能重载,必须公有,不带任何参数

那么,什么时候会用到析构函数呢?总结一句话就是对象马上释放的时候!

1、离开对象的作用域

2、 销毁对象

3、删除一个指向对象的时候

#include <iostream>
using namespace std;

class Test
{
public:
    Test(){cout<<"这是不带参的默认构造函数"<<endl;}
    ~Test(){cout << "这是析构函数"}
};

void main()
{
Test t;
return ;
}
/******************************************/
The output is 
   这是不带参的默认构造函数
   这是析构函数

浅拷贝:一个类的对象同过赋值操作可以把自己拷贝给相同类的另外一个对象。但是这种赋值方式是对象数据成员之间的相互赋值,这可能创建的仅仅是一种物理拷贝

当所拷贝的对象里面包含指针的成员变量的时候,这种浅拷贝会造成二次删除,这是不合法的。所以应当避免这种拷贝

class Thing 
{
private:
      int a,b;
      int *p
public:
       Thing ():b(0){a=0,p=&a}
       
};
Thing t1,t2;
t1=t2;

在这个程序段里,我声明了一个类Thing ,里面包含一个指针类型的成员变量,int *p,在接着我把 Thing 类型的 t2 赋值给t1,这个时候就把t2的指针的值付给了t1  ,指针同时指向t2的 成员变量a,在释放内存的时候,先释放t2,再释放t1的时候,发现t1的指针变量所指向的内存已经被释放了,所以就会抛出异常,就是二次删除。

当然在这个程序中构造方法使用了初始化列表对数据成员进行初始化,比在函数中进行赋值要高效

在一个类中,访问函数get和print函数通常要作为const成员函数,常成员函数,不能修改成员变量的值。

this 指针

每一个对象都包含了一个指向自身的指针,称作this指针。他是隐藏的,但是可以在需要的地方显式的调用。

在用指针的时候要注意操作符的优先级,一般我们要像(*this)这样用

this指针的链式表达式:

 class Thing
 {
 public:
     Thing & setx(int a )
     {
         (*this).x=a;
         return *this;
     } 
     Thing & sety(int b)
     {
         (*this).y=b;
         return *this;
     }
      Thing & setz(int c)
     {
         (*this).z=c;
         return *this;
     }
 };
Thing thing ;
 thing.setx(1).sety(2).setz(3);
 
 
 /********************************/
 打印输出后会输出Thing的xyz的值:1 2 3

如果把引用去掉会发生怎么样的变化呢?

去掉引用 函数返回的就是一个临时的对象,他会把 2 3 付给新生成的两个临时对象,所以去掉引用发生的结果不能预测,因此我们一定要避免这种情况。

this指针的特点:

1、this指针由编译器自动在声明类对象是创建(不需要自己定义)

2、每个对象或者函数(成员变量,或函数 非static都隐藏了一个this指针)

3、this指针都保留了指向该对象的地址

4、当类的非static成员函数访问另一个非static函数时,编译器会自动将对象的地址传递给内部调用的函数。(就是在一个成员函数内调用另一个成员函数时,不用管对象的地址)

时间: 2024-10-11 11:03:04

吃完饭继续来码字了 C++ 析构函数 传值,this指针的相关文章

HDU 1013Digital Roots 吃完饭,水个题。

Digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 53073    Accepted Submission(s): 16565 Problem Description The digital root of a positive integer is found by summing the digits of

荣经堂养生:吃完鸡蛋不能立即做七件事

鸡蛋是很好的营养品之一,富含多种人体必需的物质,但是在中医学中,任何事物都相生相克,鸡蛋也不例外,因为吃完鸡蛋后,有些事情不能立即做.以下是7件吃完鸡蛋不能立即做的事情. 1.吃完鸡蛋后不要立即吃糖 鸡蛋不可以跟味精一起煮,相信很多主妇都已经知晓.但是你可能不知道,鸡蛋不可以跟糖一起煮或者吃鸡蛋后吃糖也是不行的.很多地方有吃糖水荷包蛋的习惯,其实,那会使鸡蛋蛋白质中的氨基酸形成果糖基赖氨酸的结合物.而这种物质不易被人体吸收,所以会对健康会产生不良作用. 2.吃完鸡蛋后不要立即吃柿子 吃完鸡蛋后吃

Java 并发专题 :闭锁 CountDownLatch 之一家人一起吃个饭

最近一直整并发这块东西,顺便写点Java并发的例子,给大家做个分享,也强化下自己记忆. 每天起早贪黑的上班,父母每天也要上班,话说今天定了个饭店,一家人一起吃个饭,通知大家下班去饭店集合.假设:3个人在不同的地方上班,必须等到3个人到场才能吃饭,用程序如何实现呢? 作为一名资深屌丝程序猿,开始写代码实现: package com.zhy.concurrency.latch; public class Test1 { /** * 模拟爸爸去饭店 */ public static void fath

IT行业是吃青春饭的吗?

作者:杨中科 1.“it专业的学生太多了,而且就业压力很大”是吗?     现在各个大学为了赚钱拼命扩招,所以不仅IT专业的学生人比较多,而且其他专业的学生人数也比较多,“僧多粥少”就通常意味着就业压力大.但是反过来看,现在很多IT企业都存在“人才荒”的问题,也就是很多企业都招不到合适的人才,我认识一些做IT人力资源方面工作的朋友,他们都普遍反映现在企业里很难招到合适的人才.初看起来很奇怪“每年有很多IT专业大学生毕业,很多都找不到工作”,而“企业每年都缺人,招不到合适的人才”,造成这种奇怪的“

程序猿,一个吃青春饭的行业

青春易老,容貌不再.程序猿都会有这种感叹.吃"青春饭"的行业挥霍的是年龄.体力和精力,赶在青春消逝之前,便要改弦易辙,另谋出路,吃着自己碗里的,看着别人锅里的.要想做到"步步高",往往须要具有下面特征:注重学习修养,强调创新拓展.这些就逼着从业者要未雨绸缪. 程序猿在外人看来,看似光鲜.背后却难掩尴尬.光鲜的背后是:找不到女朋友,青春不在,健康不在. 眼下,大部分IT从业者的黄金岁月是在24岁-28岁. 非常多程序猿在工作一段时间后就把自己的目标定位在系统分析员或创

大龄程序员找不到工作,程序员真的是吃青春饭的吗?

程序员这行业就是吃青春饭的,于是也有许多这个行业的新手开始追问,程序员真的是吃青春饭的吗?在这里,我借用一位老程序员的话:程序员不是年纪大的都转行了,而是技术差的都被淘汰了.当然,如果一味这样说也过于偏颇了.所以,今天小编给大家说一说,到底这个程序员与青春饭是一种什么样的联系呢? "中年危机"这个词,不知在什么时候悄然进入了80后的生活里,导致很多职场上的80后整日战战兢兢,担忧自己的未来,尤其是近日年底爆发的裁员潮,一时间闹得人心惶惶.裁员潮波及最大的自然属互联网行业,这样一个新兴却

都说程序猿是吃青春饭,为什么还是有那么多人想要加入呢?

你应该不只听过程序员是吃“青春饭”. 你应该还听说过 IT 行业人才是饱和了: 中国的程序员供大于求了: Android 和 iOS 开发已经饱和了: 前端开发太简单,前端程序员没前途. 但是有一个道理你要懂,无论是哪个行业,总是遵循金字塔原则: 第一步:年轻的时候,可以靠体力等优势,做一些基础工作,这部分群体也是最大的. 第二步:扎实基础知识,提升专业技能,成为高级工程师或者同等级的职位. 第三步:拓宽眼界,深入业务,提高思考高度,综合提升各方面能力,成为技术专家或者同等级的管理人员. 第四步

关于程序员吃青春饭问题之探讨

1. 问题描述 问题1: 什么是程序员? 在本文中程序员的定义为: 拥有编程技能,在IT.互联网公司打工的IT从业人员.程序员与很多行业最大的不同是该行业的形成时间短:1954年第一台计算机才诞生,而中医从神农尝百草就有了,小姐从春秋齐桓公时期就有了. 问题2:什么叫”青春饭“? 对于青春饭,有两个极端行业可以作为参考: 中医和小姐.中医: 越老越吃香,50.60岁老中医和20岁.30岁年轻中医,大多数人会果断选择老中医.小姐: 越年轻越吃香,50.60岁老小姐(如果还有的话)和20.30岁的年

互联网思维到底是什么?看完就知道……

同学们,很多人问我,究竟互联网思维到底是什么?其实互联网思维是相对于工业化思维而言的.互联网思维是一种商业民主化的思维.互联网思维是一种用户至上的思维.互联网思维下的产品和服务是一个有机的生命体.互联网思维下的产品自带了媒体属性.有互联网思维的企业组织一定是扁平化的.下面我给大家分享下我总结的关于互联网思维的一些看法: 互联网思维精髓大总结:1.用户思维:2.简约思维:3.极致思维:4.迭代思维:5.流量思维:6.社会化思维:7.大数据思维:8.平台思维:9.跨界思维. 在详细阐述上面9大要点的