• 构造函数和析构函数


    类名(){}

    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;
    }

  • 相关阅读:
    浏览器中使用js跨域获取数据
    Flash和JavaScript通信
    display
    流媒体,hls
    防止字溢出
    <head>头部
    ps图层填充颜色——先选好颜色,再选中需要填充颜色或者修改颜色的图层,最后按住Alt+Delete键。完成。
    div相对于浏览器窗口居中、图片相对于外层的div居中
    CSS绘制三角形
    点击A页面链接,跳转至B页面指定位置
  • 原文地址:https://www.cnblogs.com/Stephen-wife/p/13281018.html
Copyright © 2020-2023  润新知