zoukankan      html  css  js  c++  java
  • 面向对象

    概念
    image.png
    一个很形象的图
    image.png

    • 匿名组合

    image.png
    一个结构引用另一个结构体的成员,继承全部

    • 匿名字段的初始化
    • 顺序初始化
      image.png
    • 自动推导型
      image.png
      image.png
    • %+v :显示更加详细,继承自哪里都显示出来
    • 指定成员初始化
      image.png
      image.png
    • 指定匿名字段的值
      image.png
      image.png
    • 注意
      匿名字段的使用,不能直接顺序指定值 S5:=Student{"yy",'m',18....}
      这样子是无法编译的image.png
    • 成员的操作
    • image.pngimage.png
      image.png
    • 指定匿名字段的值
      image.png
      类似于py,直接变量.成员名,就可以对其进行取值及赋值
    • 同名字段处理
    • 当两个结构体中有同名字段,进行赋值时,遵循就近原则,作用域的选择
      image.png
      image.png
      可以看到匿名字段中的name为空,主结构体中的name被赋值
      如果要指定匿名结构体中的成员,就要进行显示指定
      image.png
    • 非结构体匿名字段

    image.png
    image.png

    • 结构体指针类型

    image.png
    声明跟取地址,拿到的是一串内存地址,
    shi
    当单个拿出来之后
    image.png
    image.png
    也可以使用new进行声明
    image.png
    image.png

    • 方法

    image.png
    接受者可以使用指针类型,但是接受者的本类型不能是指针类型。
    原来的面向过程型
    image.png
    image.png
    面向对象型
    tmp就是原先的a,后面的other就是原来的b
    image.png
    调用
    image.png
    image.png
    为结构体类型添加方法
    image.png
    image.png

    • 指针类型
      image.png
      通过接口函数给其赋值
      image.png
    • 值语义和引用语义

      • 值语义
        image.png
        image.png
        传入的是值
        image.png
        可以看到,s1的地址在声明初和调用函数时地址是不一样的,函数调用的那部分相当于是s1的一个拷贝。
        而且传入值改变内部成员,只能在函数内部生效,在函数外还是没有改变
        %p 打印地址
      • 引用语义
        image.png
        image.png
        image.png
        可以看到两个变量的地址是一样的,传递的是指针,(地址),变量经过函数调用之后也改变了
    • 方法集

    image.png
    image.png
    还可以这样,编译器内部自动转换
    image.png
    普通调用方式,也可以调用指针。

    • 方法的继承

    image.png
    image.png

    • 方法的重写

    image.png
    image.png
    新的机构体实现了一个与原结构函数名相同的函数,在新结构体调用该函数时,就会就近使用本身实现的同名函数,如果要使用原结构体的函数,就可以显式的调用,新结构以变量名.原结构体名称.函数名()

    • 方法值

    image.png
    与传统调用相比,就是把 结构体变量名.函数名() 变成 结构体变量名.函数名,用一个变量来保存,这个变量就是方法值,保存的是未调用的方法。 要真正调用时采用方法值()进行调用。
    image.png

    • 方法表达式

    image.png
    方法表达式跟方法值相比,省去了声明变量,直接在表达式使用结构体。在调用时再传入变量

    • 接口

    image.png
    定义
    image.png
    image.png
    image.png
    image.png
    调用
    image.png
    image.png
    接口的继承
    image.png
    image.png
    image.png
    image.png

    1. 接口转换
      image.png
    2. 子集转不了超集,会提示如下报错
      image.png
    3. 超集可以转子集
      image.png
      空接口
      image.png
      image.png
      类型判断
      使用if来判断
      image.png
      当类型是结构体时,value返回的就是整个结构体对象,结构体内的成员可以使用value.成员名打印出来
      image.png
      使用switch来判断
      image.png
      switch声明一个变量来接受值.type()
      image.png
  • 相关阅读:
    线性表单链表的实现
    线性表顺序存储结构
    【C语言】产生随机数
    TCP/IP协议
    【bfs】奇怪的电梯(P1135)
    【DFS】取数游戏(P1123)
    【DFS】圣诞夜的极光(P1454)
    【贪心】骑士的工作(P2695)
    【贪心】纪念品分组(P1094)
    生活的那么一点反思
  • 原文地址:https://www.cnblogs.com/cizao/p/11482008.html
Copyright © 2011-2022 走看看