• 【笔记】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的数据。

  • 相关阅读:
    deleted
    deleted
    deleted
    deleted
    deleted
    deleted
    POJ 1840 Eqs(乱搞)题解
    UVALive 6955 Finding Lines(随机化优化)题解
    CodeForces 828E DNA Evolution(树状数组)题解
    UVA 11019 Matrix Matcher(二维hash + 尺取)题解
  • 原文地址:https://www.cnblogs.com/elesos/p/2793175.html
Copyright © 2020-2023  润新知