十三、初始化 Initialization

1. 概述

通过定义构造器 initializers 创建类、结构体和枚举的一个实例。与Objective-C的 initializers 不同的是,Swift中的 initializers 没有返回值。

类类型 class types 的实例也可以实现析构器 deinitializer,在类被释放之前,进行清理工作。

2. stored properties的初始化(Setting Initial Values for Stored Properties)

类和结构体的 stored properties 在他们的实例被创建的时候,就必须有合适的值。

你可以在构造器中初始化他们,也可以在定义的时候给他们设置默认值。

注意:当给 stored property 初始化的时候,不论是使用默认值初始化,还是调用构造器初始化,都不会调用属性监视器。

2.1 构造器 Initializers

构造器是使用 init 关键字定义的没有参数的方法,用来创建某种类型的实例:

    init() {
      // perform some initialization here
    }

如:

    struct Fahrenheit {  //华氏温度
      var temperature: Double
      init() {
        temperature = 32.0
      }
    }
    var f = Fahrenheit()
    println("The default temperature is \(f.temperature)° Fahrenheit")
    // prints "The default temperature is 32.0° Fahrenheit"

2.2 默认参数值 Default Property Values

当某个参数总是有某个相同的初始化值时,使用默认参数值比在构造器中初始化它要好。当然他们的结果是一样

    struct Fahrenheit {
      var temperature = 32.0
    }

3. 自定义初始化方法 Customizing Initialization

下面的例子定义了结构体Celsius的两个初始化器,用于初始化不同范围的温度:

时间: 2024-08-28 02:30:32

十三、初始化 Initialization的相关文章

条款十三: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同

template<class t> class array { public: array(int lowbound, int highbound); ... private: vector<t> data; // 数组数据存储在vector对象中 // 关于vector模板参见条款49 size_t size; // 数组中元素的数量 int lbound, hbound; // 下限,上限 }; template<class t> array<t>::a

Objective -C Object initialization 对象初始化

Objective -C Object initialization 对象初始化 1.1 Allocating Objects  分配对象 Allocation is the process by which a new object is born. allocation 是新对象诞生的过程. Sending the alloc message to a class causes that class to allocate a chunk of memory large enough to

Java系列笔记(1) - Java 类加载与初始化

目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一条类加载器链,一般的,我们只会用到一个原生的类加载器,它只加载Java API等可信类,通常只是在本地磁盘中加载,这些类一般就够我们使用了.如果我们需要从远

启动期间的内存管理之初始化过程概述----Linux内存管理(九)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDrivers Linux内存管理 在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_32上需要切换到保护模式, 然后内核才能检测到可用内存和寄存器. 而我们今天要讲的boot阶段就是系统初始化阶段使用的内存分配器. 1 前景回顾 1.1

初始化列表的用法说明

类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算 使用初始化列表有两个原因: 1.必须这样做:   <C++ Primer>中提到在以下三种情况下需要使用初始化成员列表: 一.需要初始化的数据成员是对象的情况:二.需要初始化const修饰的类成员:三.需要初始化引用成员数据:        如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成

Java 类加载与初始化

文章转自 http://www.cnblogs.com/zhguang/p/3257367.html, 该文章中的类加载概念与<java编程思想>概念有所不同.<java编程思想>里类加载包含了该文章的类加载,链接,验证,初始化等过程.请读者注意. 目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个Class对象,存储在.class文

【转载】Java系列笔记(1) - Java 类加载与初始化

Java系列笔记(1) - Java 类加载与初始化 原文地址:http://www.cnblogs.com/zhguang/p/3154584.html 目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一

【转载】Java 类加载与初始化

原文地址:http://www.cnblogs.com/zhguang/p/3154584.html 目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一条类加载器链,一般的,我们只会用到一个原生的类加载器,

条款04:确定对象被使用前已被初始化

记住:永远在使用对象前先将它初始化. 1.不要混淆赋值assignment和初始化initialization. ABEntry::ABEntry(const std::string& name,const std::string& address,const std::list<PhoneNumber>& phones)//版本1 { theName = name;//这些都是赋值而非初始化 theAddress = address; thePhones = phon