zoukankan      html  css  js  c++  java
  • 构造函数和析构函数

    类名(){}

    1.构造函数没有返回值也不写void

    2.函数名称与类名相同

    3.构造函数可以有参数,因此金额已发生重载

    4.程序在调用对象时候会自动调用构造,无需手动调用,而且只会调用一次

    析构函数语法 ~类名(){}

    1.析构函数,没有返回值也不写void

    2.函数名称与类名相同,在名称前加上~

    3.析构函数不可以有参数,因此不可以发生重载。

    4.程序在对象销毁前会自动调用析构,无需手动调用,而且只会调用一次

    #include<iostream>
    using namespace std;
    class person {
    public:
    person() {
    cout << "构造函数的调用" << endl;
    }

    };
    void test01() {
    person p;//建个对象
    }
    int main(){
    test01();////运行之后程序会自动调用构造函数
    return 0;
    }

     构造函数的分类及调用

    两种分类方式:按参数分为:有参构造和无参构造

    按类型分为:普通构造和拷贝构造

    三种调用方式:

    括号法  注意,调用默认构造函数时不要加()直接person p1; person p2(10);person p3(p2)

    显示法  person p1; person p2=person(10) ; person p3=person(p2);  等号右侧叫匿名对象,当前行执行后,系统会立即回收匿名对象

    注意:不要利用拷贝函数初始化匿名对象,编译器会认为这是对象声明person(p3)编译器会把小括号去掉 person p3该对象已经存在

    隐式转换法

    person p4=10;//相当于 person p4=person(10)

    person p5=p4

    #include<iostream>
    using namespace std;
    class person {
    private: int age;
    public:
    person() {
    cout << "无参构造函数的调用(默认)" << endl;
    }
    person(int a){
    age=a;
    cout << "有参构造函数的调用" << endl;
    }
    //拷贝构造函数
    person(const person &p){
    cout << "拷贝构造函数的调用" << endl;
    age=p.age;
    }
    ~person(){
    cout<<"析构函数的调用"<<endl;
    }

    };
    void test01() {//括号法,显示法,隐式转换
    person p1;
    //建个对象 (在栈上的数据,在test01执行完毕后,释放这个对象)
    person p2(10);//(有参构造函数)
    person p3(p2);
    }
    int main(){
    test01();////运行之后程序会自动调用构造函数
    system("pause");
    return 0;
    }

  • 相关阅读:
    前端页面的防抖与节流
    vue3.0 响应式原理
    cssBEM命名规范及常用CSS class 命名
    vue2.x 响应式原理
    npm 相关命令
    Node之 fs
    Node 之 Buffer
    Node之path
    Node之process
    Node.js 如何处理 ES6 模块
  • 原文地址:https://www.cnblogs.com/Stephen-wife/p/13281018.html
Copyright © 2011-2022 走看看