14章 类 part 1

14.1成员函数、对象复制与私有成员

14.1.1类的相关基础

1.类的构成:成员变量以及成员函数;

2.访问类的成员,如果用类的对象来访问,那么则是“对象名.成员名”;如果是对象的指针来访问,那么则是“指针名->成员名”;

3 struct和class的区别:

  1. struct 和 class 都可以自定义数据类型,也支持继承操作。
  2. struct 中默认的访问级别是 public,默认的继承级别也是 public;class 中默认的访问级别是 private,默认的继承级别也是 private。
  3. 当 class 继承 struct 或者 struct 继承 class 时,默认的继承级别取决于 class 或 struct 本身, class(private 继承),struct(public 继承),即取决于派生类的默认继承级别。

tip:建议把只有成员的变量设置为struct;

14.1.2成员函数

成员函数的定义:

class Time {
public:
	int Hour;
	int Minute;
	int Second;
	void initTime(int tmphour, int tmpmin, int tmpsec) //成员函数
	{
		Hour = tmphour;
		Minute = tmpmin;
		Second = tmpsec;
	}

14.2构造函数、explicit与初始化列表

14.2.1

构造函数的写法

class A
{
    public:
    {
        void myfunc()
        {
          实现代码
        }
    }
}
//写法2
class A
{
    public:
    {
        void myfunc()
        
    }
}
void A::myfunc()
{
   实现代码
}

14.2.2构造函数

1.构造函数在创建类对象时被自动调用;
2.构造函数是为了初始化类的数据成员

构造函数的实现:

Time::Time(int tmphour, int tmpmin, int tmpsec)
				:Hour(tmphour),Minute(tmpmin) //这就叫构造函数初始化列表

{
	Hour = tmphour;					
	Minute = tmpmin;
	Second = tmpsec;
	initMillTime(0);
}

注意事项:1.构造函数无返回值
2.不可手动调用构造函数
3.构造函数是public函数,因为他要被系统调用
4.构造函数如果有参数,那么其在创建对象时也应该有相应的参数

Time myTime = Time(12, 13, 52);
		Time myTime2(12, 13, 52);
		Time myTime3 = Time{ 12, 13, 52 };
		Time myTime4{ 12, 13, 52 };
	//	Time myTime5 = { 12, 13, 52 };

		//Time myTime6(); //这不可以,没参数,可能被编译器误认为是函数声明
		//Time myTime7(12, 13); //不可以,缺少参数	

14.2.3多个构造函数

一个类可以提供多个构造参数,代表着可以为这个类提供多种创建的方法;

14.2.4函数默认参数

若将构造函数写为如下形式

Time::Time(int tmphour, int tmpmin, int tmpsec=12)

那么可以只传递两个参数给构造函数;

14.2.5隐氏转换和explicit

加上explicit声明表示构造函数必须进行显示转换;

上一篇:Part-1:设计前提-社交是什么


下一篇:docker overlay网络跨主机通信——使用(OVS)打通网络