zoukankan      html  css  js  c++  java
  • 构造函数, 前向引用声明,枚举类

    C++标准模板库中的string类存放字符串,会根据据需要去延展,不会越界。

    s+t,将串s与t连成一个新串

    s[i]访问下标为i的字符,c风格字符串是存放在数组中的

    getline(1,2,3)其中1是输入流对象,2可以是字符串对象,3是规定遇到什么字符结束,默认换行作为结束符

    getline遇到分隔符,cin这次的数据没有全部读完,下次读取cin的数据,从分隔符开始往后读

    三角函数输入角度,要先转化成弧度值,包含在cmath头文件中

    函数的调用在函数的定义之前,需要进行函数的原型的声明

    return 最后以临时无名变量形式返回

    ----------------------------------------------------------

    设计类就是设计类型:

    1,此类型的合法值是什么

    2,此类型应该有什么样的函数和操作符

    3,新类型的对象该如何被创建和销毁

    4,如何进行对象的初始值和赋值

    5,对象作为函数的参数如何以值传递

    6,谁将使用此类型的对象成员

    -------------------------------------------------------------

    公有成员是外部接口

    私有成员只允许本类中的函数来访问,在类外不可访问

    构造函数,在对象被创建时,使用一个特定的值,把对象初始化到一个特定的状态,构造函数在对象被创建时被自动调用

    构造函数后面的冒号:,是初始化列表,对类的成员变量进行初始化,比去函数体中写赋值表达式效率高

    默认构造函数,参数表为空,不给实参,初始化成员列表时不用参数,用希望默认的值

    class a

    {

    private:  int hour; int  second;

    public:a():  hour(0),second(0){}

    }

    委托构造函数:委托构造函数使用类的其他构造函数执行初始化过程,好处:保持代码一致性

    复制构造函数:用一个已经存在的对象初始化同类型新对象,可以按自己意愿进行复制,多复制或少复制一个数据成员

    默认复制构造函数:两个对象的数据成员之间的一一对应复制,形参为本类的对象引用,作用是用一个已存在的对象初始化同类型新对象

    const 类名 &对象名,常引用,防止被修改,只能使用这个引用调取它里面的数据,不能用这个引用对它所指的对象修改,既能传参进来,又能保证实参的安全性

    三种情况下调用复制构造函数:

    1,定义一个对象时,用本类对象作为初始值,发生复制构造

    2,函数的形参是类的对象,调用函数时,将使用实参对象初始化形参对象,发生复制构造

    3,函数的返回值是类的对象,函数执行完成返回主函数时,将使用return语句中的对象初始化一个临时无名对象,传递给主调函数,此时发生复制构造

    在有指针的情况下,默认构造函数浅层复制不够用,要深层

    -------------------------------------------------------------------------

    类组合的概念:类中的成员是另一个类的对象,这可以在已有抽象的基础上,实现更复杂的抽象

    部件类对象的初始化:假设不是同一开发者,不知道内部构造,要在写组合类的构造函数时考虑到,由组合类的构造函数负责将部件对象初始化,把所需要的初始化参数传递给它,然后编译器会自动调用部件类的构造函数来初始化这些部件对象

    原则:不仅要负责对本类对象中的基本类型成员数据初始化,也要对对象成员初始化

    初始化顺序是:成员在类体中定义的次序

    处理完初始化列表后,再执行构造函数的函数体

    记得在类中多写一个默认构造函数,因为当类的部件对象被用作其他类的部件成员时,可能组合类不写构造函数,就用默认构造函数

    形实结合从后往前

    -------------------------------------------------------------------------

    前向引用声明:两个类相互引用

    类应该先声明再引用

    如果需要在某个类的声明之前,引用该类,则应进行前向引用声明

    前向引用声明只为程序引入一个标识符,但是具体声明在其他地方

    如class B;//声明一个类名,但细节还没有定义

    前向引用声明注意事项:

    在提供一个完整的类声明之前,不能声明该类的对象,也不能在内联成员函数中使用该类的对象

    当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节

    ---------------------------------------------------------------------------------

    UML三个基本部分:

    1,事物:在模型中是最静态的部分,代表概念上或物理上的元素

    2,关系:把事物紧密联系在一起

    3,图:是很多有相互关系的事物的组

    ----------------------------------------------------------------------------------

    什么时候使用结构体:

    定义主要用来保存数据,而基本上没有太多的函数去操作,或者是把一组数据集成在一起构成新的类型,又希望外部能比较方便地访问这些数据

    ----------------------------------------------------------------------------------

    联合体:目的与差别:存储空间的共用,用关键字union————所有成员共用内存单元,所以任何两个成员都不会同时有效,只选用其中一种使用,如成绩表达式,可选择变量有,等级,通过,分数,每次只取一种,可以避免冗余和错误

    -------------------------------------------------------------------------------------

    枚举类定义:语法形式,enum class 枚举类型名:底层类型{枚举值列表};

    比使用简单枚举类类型控制更严格,

    优势:

    1,强作用域:只允许从括号中选

    2,转换限制,不隐式转换成int

    3,可以指定底层类型,不仅可以用整数作为常量

  • 相关阅读:
    使用SecureCRTP 连接生产环境的web服务器和数据库服务器
    CSS之浮动
    CSS之定位
    Session的过期时间如何计算?
    浏览器关闭后,Session会话结束了么?
    Spring事务注意点
    Lucene 的索引文件锁原理
    Mysql数据库的触发程序
    记一次jar包冲突
    关于jvm的OutOfMemory:PermGen space异常的解决
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9570543.html
Copyright © 2011-2022 走看看