zoukankan      html  css  js  c++  java
  • 【笔记】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的数据。

  • 相关阅读:
    asp.net 一次性提交大量数据,服务器会报错,要在 web.config 中设置一下
    同一服务器上多个版本的 sqlserver ,如何连接,改变某一实例的端口号
    安装SQl 2008为SQL Server代理服务提供的凭据无效
    winserver2008 R2 64位 企业版 , IIS 配置运行 asp+access 网站
    获取屏幕分辩率及客户端信息
    如何使用 aspnetpager
    SQL函数:判断库、表、存储过程等是否存在
    NPOI封装类
    Python基础Day1
    HTML5_增强可访问性和解决IE兼容性问题
  • 原文地址:https://www.cnblogs.com/elesos/p/2793175.html
Copyright © 2011-2022 走看看