• C++中的类


    class
    1、C++中的 class与struct 一样,是一种复合数据类型
    2、里面可以有变量用来表达属性,函数用来表示行为
    3、在C++中的class与struct ,几乎没有任何区别
    4、struct 中默认访问属性是public ,class 中默认的访问属性是 private
    5、在C++中默认使用class,以示与C语言中的class 进行区分



    class的构造函数
    1、在创建对象时自动调用的函数,在整个对象的生命周期中一定会被调用一次,且只能被调用一次
    2、在构造函数中负责对成员变量的初始化、分配资源、设置对象的初始状态
    3、构造函数可以有多个版本,这些不同的版本之间会构成重载,创建对象时方法不同、给的参数不同会调用相应的构造函数,如果调用的构造函数不存在可能会造成编译错误
    //无参构造
    Student stu <=> Student* stup =new Student ;
    Student stu(参数列表) <=>Student* stup =new Student(参数列表);

    4、如果类中没有定义构造函数,编译器会自动生成一个无参构造
    一旦定义了其它版本的构造函数,无参构造就不会再生成了,因此为了防止无参方式创建对象出错,在定义构造函数时,至少要实现两个

    5、无参构造未必无参,在C++中函数可以有默认参数,如果有参构造全部设置了默认参数,就会和无参数构造有冲突,它们两个只能有一个存在

    6、所谓的"编译器生成的某某函数"
    "编译器生成的某某函数",不是真正意义上的函数,编译器作为指令的生成者,只要生成具有某些函数功能的指令即可,没有必要生成高级语言的语义上的函数
    7、什么时候调用无参构造
    a、Student stu <=> Student* stup =new Student ;
    b、创建对象数组,每个对象都会调用一次无参构造
    c、如果类A中有成员是类B,当执行完类A的构造函数后就会自动调用类B的无参构造
    d、在类A中如何调用类B的有参构造
    类A(参数列表):成员类B(参数列表)
    {
    ...
    }

    8、类型转换构造函数
    用一个数据给对象初始化,默认会自动调用构造函数,达到类型转换的效果
    这种方式虽然使用方便,但也会包容一些错误存在,如果想让代码检查更为严格可以使用explicit关键字禁止隐式转换的方式调用构造函数

    9、也可以实现自动类型转换构造函数(默认)

    拷贝构造函数
    1、是一种特殊的构造函数,就是用一个已有的对象去构造其同类的副本对象,即对象克隆
    class 类名
    {
    类名(类名& that)
    {
    对类成员挨个赋值
    ...
    }
    }

    2、编译器会默认生成一个拷贝构造函数
    编译生成的拷贝构造函数默认会逐字节复制类中的每一个成员
    如果在类A中有类B成员,会在类A的拷贝构造中自动调用类B的拷贝构造

    3、程序员可以自定义拷贝构造来取代默认的拷贝构造
    a、拷贝构造只能有一个,不能重载
    b、一旦程序员自定义的构造函数,编译器就不再生成
    c、在自定义的拷贝构造中能通过编码来实现成员的复制

    4、一般情况下编译器生成的拷贝构造完全够用,不要轻易自定义构造

    5、什么情况下调用拷贝构造:
    a、对象与对象赋值
    b、用对象与函数传参
    c、用对象当作返回值

  • 相关阅读:
    用Python构建你自己的推荐系统
    相似度算法之余弦相似度
    python(五)常用模块学习
    Linux系统CPU核数等信息查看
    【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
    【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布
    【SSH网上商城项目实战26】完成订单支付后的短信发送功能
    【SSH网上商城项目实战25】使用java email给用户发送邮件
    【SSH网上商城项目实战24】Struts2中如何处理多个Model请求
    【SSH网上商城项目实战23】完成在线支付功能
  • 原文地址:https://www.cnblogs.com/xiwen2017/p/9451066.html
Copyright © 2020-2023  润新知