构造函数, 前向引用声明,枚举类

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,可以指定底层类型,不仅可以用整数作为常量

 

转载于:https://www.cnblogs.com/ymd12103410/p/9570543.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值