【笔记】C++自学笔记系列02:类的组合与类的友元

类的组合:对象充当成员

在创建对象时,也要对内嵌对象初始化

组合类构造函数定义

类名::类名(形参):内嵌对象1(形参),内嵌对象2(形参)

{   }

Circle:: Circle(float r)

{radius=r;}

等价于Circle:: Circle(float r):radius(r) {}//效率更高

此时构造函数调用顺序:1、调用内嵌对象的构造函数,按定义中出现的次序2、自己的

组合类的拷贝构造函数,要为内嵌对象的拷贝构造函数传递参数,若C类中包含B类的对象b,则C类的拷贝构造函数形式为

C::C(C &c1):b(c1.b)   {…}

全局变量和加static声明的,都具有静态生存期

类的静态成员:所有对象共享

1、              静态数据成员:不是某个对象的成员,而是为整个类所有,只存储在一个地方

只能通过类名访问“类型  类名::标识符”

//静态数据成员的定义和初始化,在类外使用类名限定

2、              静态函数成员

作用:专门访问静态数据成员,访问其它数据成员必须通过参数传递得一对象,再通过该对象访问其它数据成员

3、              一般的函数成员只能通过对象调用,但静态函数成员可以用对象或者类名来调用,从而可以在没有定义对象之前便可以调用函数

若通过一般的函数成员访问静态数据成员,最好在类外实现

类的友元:声明哪些类或函数是它的朋友,从而给它们提供对本类的访问特许

1、              友元函数:可以是一个普通函数,也可以是其它类的成员函数,

从而可以在友元函数中通过对象访问其它类的数据。

2、              友元类

Class B

{ friend class A;//声明A为B的友元类}

A的所有成员函数都是B的友元函数,都可以访问B的数据,这时最好将B的对象作为A的数据成员(类的组合),以便通过该对象访问B的数据。

原文地址:https://www.cnblogs.com/elesos/p/2793175.html