关于“类”的学习总结

首先,在关于类的学习中,我们首先要明白 什么是“类”,怎么去定义,如何去使用。

类的定义

类的定义格式一般地分为说明部分和实现部分。说明部分是用来说明该类中的成员,包含数据成员的说明和成员函数的说明。成员函数是用来对数据成员进行操作的,又称为“方法”。实现部分是用来对成员函数的定义。概括说来,说明部分将告诉使用者“干什么”,而实现部分是告诉使用者“怎么干”。
类的定义格式一般如下:

class类名标识符
{
        public:  // 公有成员
        protected:  // 保护成员
        private:  // 私有成员
};

说明:

1.class是定义类的关键字,是种标识符。一对花括号内是类的说明部分(包括前面的 类头)说明该类的成员。
2.类的成员包含数据成员和成员函数两部分。
3.从访问权限上来分,类的成员又分为:公有的(public)、私有的(private)和保护的(protected)三类。
★在定义是还应该注意到以下几点内容:

  1. 在类体中不允许对所定义的数据成员进行初始化。
  2. 类中的数据成员的类型可以是任意的,包含整型、浮点型、字符型、数组、指针和 引用等。也可以是对象。另一个类的对象,可以作该类的成员,但是自身类的对象是不可以的,而自身类的指针或引用又是可以的。当一个类的对象用为这个类的成员时,如果另一个类的的定义在后,需要提前说明。

类的实现

  1. 运算符重载可以通过非成员函数(友元函数)和成员函数进行重载。但是赋值=、函数调用()、下标运算[]、指针访问成员->只能使用成员函数进行重载
  2. 友元函数重载运算符友元函数、友元类、友元成员函数友元函数和类的成员函数具有相同的访问权限,但它不是成员函数不能使用成员运算符调用。
  3. 默认构造函数如果没有提供任何函数,C++ 将创建默认构造函数。如果定义了构造函数,C++ 将不会定义默认构造函数。

友元

友元简介
友元有三种:
(1)友元函数
(2)友元类
(3)友元成员函数
通过让函数成为友元,可以赋予该函数与类成员函数相同的访问权相。
上面例子中,左侧的操作数是调用对象,也就是说:

Time A,B;
A = B*2.75;//allow
A = 2.75*B;//not allow,because 2.75 not Time

为了解决这种情况,使用非成员函数

Time operator*(double m, const Time & t);

但是非成员函数不能访问私有数据,那么必须声明为友元,才可以访问。

friend Time operator*(double m, const Time & t);//定义的时候不需要friend

A.虽然operator * () 函数是在类声明中声明的,但它不是成员函数,因此不能使用成员操作符来调用。
B.虽然operator * ()函数不是成员函数,但它与成员函数访问权限相同。

构造函数和析构函数

一构造函数
1.构造函数在创建对象时会被自动调用负责初始化对象
2.构造函数的名字和类的名字相同,没有返回值类型(是没有返回类型,并不是返回void类型)
3.构造函数的参 数通常为数据成员提供切始值
4.构造函数的参数通常为数据成员提供初始值
5.构造函数可以重载二构造的数的初始化列表在尖中,有些成员时不能使用赋值的方式提供初始值例如:引用成员,const数据成员, 类类型的数据成员
对该情况的特殊句法称为构造再数初始化列表
成员1 (初始值1) [成员2 (初始值2),…]
初始化列表位于构造函数的参数表之后,函数体之前
构造函数(参数表) :初始化列表(函数体}

class X
{
       int m,&r;
       public:
       X(int v):r(m){m=v;}
 };

二.委托构造函数
委托构造函数所使用所处类的其他构造函数执行自己的初始化过程,把部分或全部职责托给了其他的构造函数
语法形式:
ClassName (参数表):ClassName(参数表){函数体}
三.析构函数
析构函数主要用来放弃在类对象的构造函数或者生存期中获得的资源
例如释放互斥锁或者归还new分配的空间
如果类中没有定义析构函数,编译器在需要时会自动合成一个析构函数。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值