C++11标准及知识点的记录(3)

构造函数:
1、类通过一个或几个特殊的成员函数来控制其对象的初始化过程。
2、构造函数的任务是初始化类对象和数据成员,无论何时只要类的对象被创建,就会执行构造函数。
3、没有返回类型。
4、构造函数可以重载(不同的构造函数之间必须在参数数量或参数类型上有所不同)
5、不同于其他成员函数,构造函数不能被声明为const的。当我们创建类的一个const对象(必须初始化)时,直到构造函数
完成初始化过程,对象才能真正的取得其“常量”属性。因此,构造函数在const对象的构造函数中可以向
其写值。
6、默认构造函数无须任何实参。只有当类没有声明任何构造函数时,编译器才会自动地生成默认构造函数。
构造函数初始值列表:
负责为新创建的对象的一个或几个数据成员赋初值。
当某个数据成员被构造函数初始值列表忽略时, 他将以与合成默认构造函数相同的方式隐式初始化。

7、构造函数初始值列表:
负责为新创建的对象的一个或几个数据成员赋初值。
若构造函数初始值列表是空的,但是由于执行了构造函数体,所以对象的成员任然能被初始化。
没有出现在构造函数初始值列表中的成员将通过相应的类内初始值(如果存在的话)初始化,或者执行默认初始化。
类中数据成员是常量、引用必须显示的被初始化。
构造函数初始值列表只说明用于初始化成员的值,而不限定初始化的具体执行顺序。
成员的初始化顺序与它们在类定义中的出现顺序一致。

封装:
8、封装实现了类的接口和实现的分离,隐藏了类的实现细节,用户只能接触到类的接口。
优点:
隐藏类的实现细节;
让使用者只能通过程序规定的方法来访问数据;
可以方便的加入存取控制语句,限制不合理操作;
类自身的安全性提升,只能被访问不能被修改;
类的细节可以随时改变,不需要修改用户级别的代码;

友元:
9、友元—类允许其他类或者函数访问其非共有成员,只要在本类内,加一条类前或者函数前有friend关键字(最前方)的声明即可。最好在类的开始或结尾集中声明友元。

优点:可以灵活地实现需要访问若干类的私有或受保护成员才能完成的任务,
    便于与其他不支持类的语言进行混合编程;通过使用友元函数重载可以更自然第使用C++语言的I/O流库。

缺点:一个类将对非公有成员的访问权授予其他的函数或类,
    会破坏该类的封装性,降低该类的可靠性和可维护性。

类之间的友元关系:
如果一个类指定了友元类,则友元类的成员函数可以访问此类包括非公有成员在内的所有成员。

class Screen{
    //Window_mgr的成员可以访问Screen类的私有部分
    friend class Window_mgr; //友元类
    //Screen类的剩余部分
};

成员函数作为友元:

class Screen{
    //Window_mgr::clear必须在Screen类之前被声明
    friend void Window_mgr::clear(ScreenIndex);
    //Screen类的剩余部分
};

**如果使用友元函数必须在提前声明(为了避免不必要的麻烦)。

类的作用域:
在类的外部定义的函数,必须声明类作用域,其函数名和返回类型都需要进行声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值