• C++ 构造函数


    1. 什么是构造函数

    在定义类的时候,通常会定义一些成员变量,构造函数可以对对象创建的时候,对成员变量进行初始化。比如:

    #include <iostream>
    using namespace std;
    
    class A{
    public:
        A(int m, char *p){ 
        a = m; 
        str = p; 
        }  //构造函数
        void show(){cout<<"a:"<<a<<"\n"<<"str:"<<str<<endl;} //显示函数
    private:
        int a;
        char *str;
    };
    
    int main(){
       A aa(1,"asd");
       aa.show();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在对象创建的同时就可以对成员变量赋值,不然对private类型变量初始化还得专门写函数。
    2.初始化列表
    对于上面例子的构造函数 ,可以写的更简洁一些:

    #include <iostream>
    using namespace std;
    
    class A{
    public:
        A(int m, char *p): a(m),str(p) {}  //构造函数
        void show(){cout<<"a:"<<a<<"\n"<<"str:"<<str<<endl;} //显示函数
    private:
        int a;
        char *str;
    };
    
    int main(){
       A aa(1,"asf");
       aa.show();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在构造函数定义中,将赋值操作放在了形参列表之后,用相连。这些的写法并不会带来效率上的提升,只是使代码更简洁,但是有一项需要注意,const变量只能用初始化列表初始化。
    3. 构造函数的注意事项
    ①构造函数与类同名;
    ②构造函数是必须调用的,无论你定义与否。如果没有定义构造函数,编译器在编译的时候会定义一个空的构造函数,此时程序员不用显示调用,编译器自行完成即可;如果主动定义了构造函数,则必须在创建对象的时候调用,否则报错。
    ③构造函数可以设置默认参数;
    ④构造函数可以重载,与普通函数重载没有区别。创建对象时的输入参数,在构造函数里能找到匹配的就行;
    const变量只能在初始化列表中赋值。

  • 相关阅读:
    Opencv Python图像处理笔记一:图像、窗口基本操作
    sphinx 部分高级功能汇总说明
    Linux权限管理— 文件特殊权限SetUID
    WuThreat身份安全云-TVD每日漏洞情报-2023-09-21
    Less混合结合:nth-child()选择器的高级玩法
    Docker迁移以及环境变量问题
    Cy3菁染料标记海藻酸钠;CY3-Alginate;Alginate-CY3
    jupyter notebook的插件安装以及快捷键
    Linux: alsa-lib 插件简介
    八、创建JWT工具类
  • 原文地址:https://blog.csdn.net/a1367666195/article/details/125633220