C+_类的其他特性(笔记版本)

本文深入探讨C++中的类型成员概念,包括其定义、使用与初始化,同时解析可变数据成员与类型数据成员的特性。此外,文章还详细介绍了类与友元之间的关系,以及如何正确定义和使用类类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

类型成员、

就是类的成员是一个类型

OK举个例子

class peron{

public :

    typedef std::string zm;

private:

    zm name = "love_ke";

    zm address = "anywhere";

}

我们的person类在public部分定义了zm,这样用户就可以使用这个名字。因为封装嘛,无形装逼最为致命,不让用户知道,我们用了一个string来放它的数据。(当然我们之前学过的using也可以做到)

注意:类型先定义后使用

 

可变数据成员

一个可变数据成员永远不可能是const,即使它是const对象的成员

通过关键字 mutable来定义。

 

类型数据成员的初始值

我们定义了构造函数,在进行列表初始化的时候,其会自动匹配构造函数去初始化我们的类型数据成员。

当然也可以进行赋值初始化。(仅仅是初始化的它的数据成员)

 

 

关于如何定义并使用类类型及友元

关于类类型

每个类定义了唯一的类型

对于两个类来说,即使他们的成员完全一致,这两个类也是不同的类型。

 

对于一个类来说,要创建它的对象 必须先定义它才行

所以一个class的友元class 想要使用 该class的数据成员 必须先定义该class,再定义友元class。

(c++ primer我觉得解释的巨拗口,)

举个例

class a

{

friend:class b;

public:

   int x;

}

class b 

{

public:

    int y = x;

}

但是class a和class b的位置对调就会出现问题

类之间的友元关系,我这样解释

假设有两个小朋友 小k,小d。(小k有糖,小d有玩具)

小k说:从此以后,小d就是我的好朋友了。

这句话的意味着小k拿小d当好朋友,所以小k允许小d吃他的糖 (并不意味着小k能玩小d玩具)

仅有小d也说:小d你也是我好朋友了。才意味着小k能玩小d的玩具。

(所以你看我们程序员都心智多淳朴,拿别人当朋友是开放朋友对自己的访问权限,而不是要别人的访问权限)

 

扯回来,总结一句话,一个class定义友元,就是允许友元对该class的成员进行访问

 

关于类内的作用域

只提一句 :编译器处理完类中的全部声明后才会处理成员函数的定义。

 

关于名字定义

类内层定义的名字,尽量和外层不要相同。(类内层定义的名字会隐藏外层相同的名字)

成员函数的形参名字,尽量不要和类内层相同。(如果相同的话,形参会隐藏类内对象名字,可以用this指针强制访问)

 

构造函数初始化顺序,尽量与数据成员 声明顺序一致

 

explicit关键字声明构造函数时,它将只能以直接初始化的形式使用,而且,编译器将不会在自动转换过程中使用该构造函数

所有的隐式转换只进行一步

 

聚合类:

所有成员都是public

没有定义任何构造函数

没有类内初始值

没有基类,也没与virtual函数

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值