首页 > 其他分享 >构造函数

构造函数

时间:2023-09-17 12:32:34浏览次数:29  
标签:函数 st 析构 返回值 stack 构造函数

1.构造函数

image-20230330143507670

无返回值不是指返回值为void,而是指不用写返回值;构造函数可以重载,也就是说一个类可以有多个构造函数,就有多种初始化方式。

对象实例化的时候会自动调用构造函数;无参的构造函数不能这样写stack st(),带参数的可以这样写stack st(4),有了构造函数不用担心对象初始化问题。

image-20230330144301962

为什么不能理解为构造函数的使用就是st.stack(4)?不合理,因为在这里的时候st还没有实例化出来,构造函数不能用对象去调用。如果这样写stack st;st.stack(4),如果这样写,和初始化没区别,所以不用显示调用。

无参的构造函数st.stack()不能带括号,因为会报错,原因是编译器区分不了是函数声明还是在定义对象,编译器区分不了,st.stack(4)但是有参的可以这样写,因为如果是函数声明的话要带参数类型,即stack st(int x)

2.析构函数

image-20230330145057608

栈帧结束,局部变量销毁。析构函数主要完成的是对象中资源的清理,动态开辟的空间需要释放,所以需要清理,要调用析构函数。在对象销毁的时候会调用析构函数,就是出了作用域,生命周期结束的时候。

析构函数没有参数,没有返回值,不用写返回值;

image-20230330150819065

自动调用是构造函数和析构函数的精华

类中可以随便定义函数,我们定义一个Date类。不用在前面加this。

标签:函数,st,析构,返回值,stack,构造函数
From: https://blog.51cto.com/u_15562309/7500847

相关文章

  • 记录一次xlua修复构造函数的经验
    需求:类型A包含多个重载构造函数(包含参数数量相同但参数类型不同的情况)。修复方法:像这种修构造函数的lua,会注入到所有符合条件的函数中(参数数量相同的),但可能你只需要修复其中一个,这个时候可以在lua函数内部进行类型判断,来决定时候走热更代码。localA=function(self,jsonVehic......
  • Laravel 执行流程(三)之 探索 Application 构造函数
    备注:纯手打的学习笔记,如有错误之处请指正,谢谢。希望大家学的开心!说明:本来应该是说Container类(下)的,不过经过学习,直接看这个类实在不好理解,一会是绑定,一会共享实例,真心不知道说的什么....还是先从程序的入口处,顺藤摸瓜,用到的时候再结合上下文理解,比较容易消化,希望理解,抱歉!OK,从入......
  • JS深入学习笔记 - 第一章.构造函数原型与原型链
    1.构造函数和原型 1.1概述在典型的 OOP语言中(如Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS并没有引入类的概念。在ES6之前,对象不是基于类创建的,而是一种称为构建函数的特殊函数来定义对象和它们的特征。有三种创建对象的方式:对象字面量(constob......
  • 封装的思考(快捷键Alt+insert很重要,千万记住,它还能构造函数)
      这边就是封装的意义,然后操作方式和C++没差多少 然后这里是java封装的语法,看看和C++的区别 接着就是一些快捷键的使用  ......
  • 手撕代码,实现String类的构造函数、拷贝构造函数、赋值构造函数以及析构函数
    #include<bits/stdc++.h>usingnamespacestd;classString{public:String(constchar*str=NULL){//普通构造函数cout<<"普通构造函数被调用"<<endl;if(str==NULL){data=newchar[1];*dat......
  • 《Head First Java》学习笔记2--接口、构造函数与垃圾收集器
    接口:Java的接口就像是100%的纯抽象类接口的方法都带有public和abstract意义,这两个修饰符是属于选择性的完全不同的继承树的类可以实现相同的接口,使用接口就像是说“不管来自哪里,只要实现这个接口,别人就会知道你一定会履行这个合约”当用接口来作为多态......
  • C++中虚继承时的构造函数
    在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的。下面我们以菱形继承为例来......
  • C++的基类和派生类构造函数
    基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生类的构造函数,当然更不能成为普通的成员函数。在设计派生类时,对继承过来的成员变量......
  • 合成构造函数
    如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,称为合成的构造函数。通常我们认为如果一个class没有构造函数,编译器就会为我们合成一个,其实这种观点是不正确的。比如像下面这样的class:classPerson{intage;char*name;};......
  • 构造函数
    一、inline(内联)函数 什么情况下产生inline:函数在class的本体里面定义,就形成一种inline。在外头定义就不是inline。但是,是不是最后真的变成inlinefunction由编译器决定。inline有什么好处:快。有特点而没有缺点。尽量都写成inline那最好。2-2不在本体内定义,可以在......