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

构造函数与析构函数

时间:2023-02-12 11:11:06浏览次数:36  
标签:调用 函数 与析构 创建对象 参数 析构 构造函数

构造函数和析构函数

构造函数:在创建对象时,自动的进行初始化工作。

析构函数:在销毁对象前,自动的完成清理工作。

1)构造函数

语法:类名()

l 访问权限必须是public。

l 函数名必须与类名相同。

l 没有返回值,不写void。

l 可以有参数,可以重载,可以有默认参数。

l 创建对象时只会自动调用一次,不能手工调用。

2)析构函数

语法:~类名()

l 访问权限必须是public。

l 函数名必须在类名前加~。

l 没有返回值,也不写void。

l 没有参数,不能重载。

l 销毁对象前只会自动调用一次,但是可以手工调用。

注意:

1) 如果没有提供构造/析构函数,编译器将提供空实现的构造/析构函数。

2) 如果提供了构造/析构函数,编译器将不提供空实现的构造/析构函数。

3) 创建对象的时候,如果重载了构造函数,编译器根据实参匹配相应的构造函数。没有参数的构造函数也叫默认构造函数。

4) 创建对象的时候不要在对象名后面加空的圆括号,编译器误认为是声明函数。(如果没有构造函数、构造函数没有参数、构造函数的参数都有默认参数)

5) 在构造函数名后面加括号和参数不是调用构造函数,是创建匿名对象。

6) 接受一个参数的构造函数允许使用赋值语法将对象初始化为一个值(可能会导致问题,不推荐)。

7) 用new/delete创建/销毁对象时,也会调用构造/析构函数。

8) 不建议在构造/析构函数中写太多的代码,可以调用成员函数。

9) 除了初始化,不建议让构造函数做太多工作(只能成功不会失败)。

10) C++11支持使用统一初始化列表。

12) 如果类的成员也是类,创建对象的时候,先构造成员类;销毁对象的时候,先析构成员类。

标签:调用,函数,与析构,创建对象,参数,析构,构造函数
From: https://www.cnblogs.com/tgfoven/p/17113432.html

相关文章

  • 《Terraform 101 从入门到实践》 Functions函数
    《Terraform101从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。Terraform的函数Terraform为......
  • 内联函数
    内联函数C++将内联函数的代码组合到程序中,可以提高程序运行的速度。语法:在函数声明和定义前加上关键字inline。通常的做法是将函数声明和定义写在一起。注意:l内联函......
  • android开发kotlin顶级函数和拓展函数的实现原理
    android开发kotlin顶级函数和拓展函数的实现原理//我们编写的源代码在MainActivity.kt下面,如下:funtopTest(){print("123")}funMainActivity.extTest(){pr......
  • 字符串常用函数
    供自己查询使用,随时补充常用函数切片#[start:end:step]左闭右开[start,end)s="Helloword"print(s[1:5])#ello默认step=1print(s[6:])#word[satrt-......
  • C++匿名函数
    #include<iostream>std::stringaaa="111";intmain(){//[]称为lambda捕获列表,它的含义为:告诉编译器需要在匿名函数内部使用外部的变量。捕获列表中的内容......
  • Spring构造函数
    Spring中的一个bean,需要实例化得到一个对象,而实例化就需要用到构造方法。一般情况下,一个类只有一个构造方法:要么是无参的构造方法要么是有参的构造方法如果只有一个......
  • vue2 data 一定要是函数吗?
    答:不一定,可以是对象,vue文档中表述有误导性而已,他自己的例子里也有对象的形式functioninitData(vm){letdata=vm.$options.datadata=vm._data=typeofdata......
  • 原型 / 构造函数 / 实例
    原型(prototype):一个简单的对象,用于实现对象的属性继承。可以简单的理解成对象的爹。在Firefox和Chrome中,每个JavaScript对象中都包含一个_proto_(非标准)的属性指向它爹(该......
  • Java8新特性3-Lambda-内置功能性函数式接口
    比较典型的几个Java8的内置功能性函数式接口在java.util.function包下,主要有四大核心的内置功能型函数式接口:谓词(Predicate)函数(Function)生产者(Supplier)消费者(Cons......
  • GCC&&G++ C && C++ 内嵌汇编和调用汇编函数的方法(x86,ARM自己对照改)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......