首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Kotlin】类初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

文章目录 一、主构造函数定义临时变量 二、主构造函数中定义成员属性 三、次构造函数 四、构造函数默认参数 一、主构造函数定义临时变量 ---- 在 Kotlin 类中 , 可以在 类声明 时 在 类名后...定义 " 主构造函数 " ; 在 主构造函数 中 , 可以 定义 成员属性 , 并为 成员属性 提供 初始值 ; 在 主构造函数 中 , 可以定义 临时变量 , 临时变量 一般使用 以下划线为开头 名称...; 代码示例 : class Hello( // 主构造函数, // 下面的两个参数仅仅用于给成员属性赋值, 只使用一次 // 这种变量称为临时变量, 使用下划线开头..., 每个次构造函数都可以有不同参数组合 ; 定义次构造函数后 , 必须调用主构造函数 , 并且为每个主构造函数 参数设置 参数值 ; 次构造函数中可以实现代码逻辑 , 作为构造函数补充 ; 代码示例..., 可以不为其传递 值参 , 构造函数中跳过该参数 , 其 后面的参数需要使用 参数名 = 参数值 进行赋值 ; 代码示例 : class Hello( // 主构造函数, 直接在主构造函数中定义属性

4.7K20

java scanner构造函数_使用Scanner作为构造函数参数Java

参考链接: Java Scanner仪类 这是一个学校任务问题,这就是为什么我这样做原因。...使用Scanner作为构造函数参数Java  总之,我在主要方法(Scanner stdin = new Scanner(System.in);是行)中使用Stdin制作扫描仪,从程序运行时指定txt...这种扫描仪按预期工作为主,不过,我需要用它在具有扫描仪作为参数自定义类:  public PhDCandidate(Scanner stdin)  {  name = stdin.nextLine()...+1  ”此时,Scanner任何调用都将结束程序,不会抛出异常或错误。“究竟在什么时候?程序在哪里结束? –  +1  我不认为你程序实际终止。我认为你控制台正在等待输入。...–  +0  @ Code-Guru:只要我尝试使用扫描器(除了stdin.next(),所有其他方法都会中断),就会结束,所以立即尝试使用.nextLine() –

2.8K30
您找到你想要的搜索结果了吗?
是的
没有找到

【C++】构造函数初始化列表 ① ( 类对象作为成员变量构造函数问题 | 构造函数初始化列表语法规则 )

一、类对象作为成员变量构造函数问题 1、问题描述 如果 一个类 A 对象 作为 另外一个类 B 成员变量时 , 在以下场景会报错 : 为类 A 定义 有参 构造函数 , 那么 A 无参默认构造函数就失效了...; 此时使用 默认无参构造函数 初始化 B , 就会报错 ; 在一个类中 , 其成员变量是 带有参构造函数 类型 , 这种情况下没有调用 有参构造函数机会 , 此时就会出现 编译报错情况 ; 在下面的代码中... 无参构造函数创建 A 对象 , 但是 A 无参构造函数无法使用 , 必须使用 A 有参构造函数 , 这里就出现问题 , 报错 “B::B(void)”: 由于 数据成员“B::m_a”不具备相应...是一种用于初始化类成员变量方法 ; 构造函数初始化列表 可实现功能 : 为成员变量提供初始值 调用其他 成员变量 构造函数 来初始化成员变量 构造函数初始化列表语法规则 : 构造函数() : 成员变量名称...(成员变量值) , 成员变量名称(成员变量值) { // 构造函数内容 } 构造函数初始化列表 位置在 构造函数 参数列表之后 , 冒号 : 与花括号 {} 之间 ; 使用 逗号 , 分隔 ;

44130

C语言结构体类型定义+结构体变量定义与使用及其初始化+结构体变量作为函数参数

上一篇文章:返回指针值函数+指向函数指针+main()函数参数 C语言结构体类型定义+结构体变量定义与使用及其初始化+结构体变量作为函数参数 结构体 引例 结构体变量定义 结构体变量使用...结构体变量作为函数参数 结构体变量初始化 下一篇文章 结构体 引例 输出平均分最高学生信息 #include struct student { int num; char name...,math; double average; }stu1,stu2;//定义两个结构体变量; 1234567 省略了结构体类型名字,在这种情况下,结构体变量只能在后面同时定义,不能在主函数中定义...,不能直接用“=”,即s1.name="张三";是错误,必须使用字符串复制函数strcpy()函数来实现,如:strcpy(s1.name,"张三"); 同一类型结构体变量间可以赋值 如:...stu2=stu1;将结构体变量stu1里面的所有成员变量值分别对应赋给结构体变量stu2 结构体变量作为函数参数 结构体变量成员作为函数实参,形参为普通变量或数组 也可以将结构体变量作为函数参数

2.4K20

c#结构体与类区别,及使用技巧 C#中结构体与类区别

在结构中,就不是这样了,在结构中隐式构造函数无论如何都存在.看看代码吧. 在下面的代码中 我们为结构体写了1个带参数构造函数.如下. ?...我们使用new关键字来创建结构体对象,我们发现调用构造函数时候,提示是有两个构造函数.多了1个无参数构造函数. ? 那么 我们再想,能不能手动写1个无参数构造函数呢?...我们在构造函数中为属性赋值 属性又为字段赋值,为什么这样就不行呢?...它们之间最大区别 是结构体是值类型 类是引用类型. 结构体是值类型,当其作为1个局部变量时候,变量是存储在栈空间中,其对象字段直接存储在这个变量.就像下面这样. ?...我们在变量传值时候,我就是希望传递对象拷贝,不是对象引用地址,那么这个时候也可以使用结构了.

1K31

C#中结构体与类区别

在结构中,就不是这样了,在结构中隐式构造函数无论如何都存在.看看代码吧. 在下面的代码中 我们为结构体写了1个带参数构造函数.如下. ?...我们使用new关键字来创建结构体对象,我们发现调用构造函数时候,提示是有两个构造函数.多了1个无参数构造函数. ? 那么 我们再想,能不能手动写1个无参数构造函数呢?...我们在构造函数中为属性赋值 属性又为字段赋值,为什么这样就不行呢?...它们之间最大区别 是结构体是值类型 类是引用类型. 结构体是值类型,当其作为1个局部变量时候,变量是存储在栈空间中,其对象字段直接存储在这个变量.就像下面这样. ?...我们在变量传值时候,我就是希望传递对象拷贝,不是对象引用地址,那么这个时候也可以使用结构了.

1.4K31

1小时入门c++面向对象编程

() (2) 指针对象 成员变量:-> 成员函数:->() (3) 引用对象 与一般对象相同 2.4 构造函数和析构函数 2.4.1...构造函数可以有一个或多个参数 构造函数可以重载 程序中不能直接调用构造函数,在创建对象时系统自动调用构造函数 构造函数执行顺序与定义顺序有关,先定义对象,先调用构造函数 2.4.4 析构函数特点...) 3.函数返回值不同不是重载条件 4.构造函数可以重载 5.析构函数不能重载 6.一般成员函数可以重载 2.5 拷贝初始化构造函数(拷贝构造函数) 2.5.1 拷贝初始化构造函数功能 用一个已知对象来初始化一个被创建同类对象...图2-12 函数设置缺省参数值 2.8 静态成员 解决数据共享问题,即不通过全局对象,实现多个对象之间数据共享 2.8.1 静态数据成员 是类所有对象共享成员不是某个对象成员 对多个对象来说...图2-14 静态变量Sum 2.8.4 静态成员函数 作用:操作静态数据成员 使用格式:::() 注意事项:静态成员函数实现中不能直接引用类中说明非静态成员,可以引用类中说明静态成员

92110

C++之类和对象

(在C语言中是习惯先定义变量使用),但是一般我们见到C++程序都是将成员函数写在成员变量前面,这是为什么呢?...C++引入了析构函数作为默认成员函数,它会在程序结束时由编译器自动调用完成资源释放(与构造函数不是开辟空间类似,析构函数不是销毁对象,销毁对象是由编译器来进行),与构造函数正好相反。...不可修改只读变量作为参数传给可以修改指针,这样就有权限放大问题。但是this指针又是隐藏参数,我们不能显示去写。...,对象已经有了一个合适初始值,但是这并不能称为对对象中成员变量进行初始化,构造函数语句只能称之为赋初值,不能称为初始化,因为初始化只能初始化一次,构造函数体内能多次赋值 。...,同样受类域和访问限定符约束; 静态成员函数最特别的地方在于它没有那个隐藏this指针,所以我们在调用时候不用传对象地址,因此可以直接使用域限定符直接调用,不需要创建对象,就能直接访问到类里面的静态成员变量

1.1K00

c#面试题抽象类和接口区别-金三银四面试:C#程序员经常遇到30道基础面试题,想你所想

变量值被传递到ref参数。传递到ref参数变量必须要先初始化。   与out参数相比,变量在传递到out参数之前不必显示初始化。属性不是变量不能作为ref参数传递。...使用out参数方法仍然可以返回一个值。一个方法可以有一个以上out参数。若要使用out参数,必须将变量作为out参数显示传递到方法。out变量值不会传递到out参数。...属性不是变量不能作为out参数传递。如果两个方法声明仅在out使用方面不同,则会发生重载。不过,无法定义仅在ref和out方面不同重载。   7、值类型与引用类型有什么不同?请举例说明?...您可以创建值类型实例,将它们作为参数传递,将它们存储为局部变量,或将它们存储在另一值类型或对象字段中。值类型没有与存储类实例相关系统开销,并且它们不需要构造函数。值类型可以有字段、属性和事件。...静态构造函数既没有访问修饰符,也没有参数。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。无法直接调用静态构造函数。在程序中,用户无法控制何时执行静态构造函数

1.9K20

C# .NET面试系列二:面向对象

构造函数是否能被重写?构造函数不能直接重写。构造函数不是继承成员,因此不能使用 override 关键字进行重写。...它使用 static 关键字声明,没有访问修饰符,并且不能带有参数。静态构造函数在以下情况下使用:初始化静态成员:静态构造函数用于初始化类静态成员。...静态成员和非静态成员区别?静态变量、静态成员和非静态成员是面向对象编程中概念,它们有不同特性和使用方式。静态变量:静态变量是属于类不是属于类实例变量。...非静态变量属于类实例,每个实例都有独立副本,需要通过实例访问。静态成员包括静态字段、静态方法等,属于类不是实例,可通过类名直接访问。...在C#中,静态方法不能直接访问非静态变量。这是因为静态方法是与类关联,而非静态变量是与类实例关联。在静态方法中,没有隐式 this 实例,因为静态方法是属于整个类不是实例

12110

3 :面向对象初级

用于修饰成员变量函数)。 通过getxx和setxx方法访问,对xx进行了封装,不是直接对xx操作  私有的内容只在本类中有效。 注意:私有仅仅是封装一种体现而已。但封装不是私有。...细节: 1,构造函数如果完成了set功能。set方法是否需要。  2,一般函数不能直接调用构造函数。 3,构造函数如果前面加了void就变成了一般函数。 4,构造函数中是有return语句。...在子父类中,成员特点体现。  1,成员变量。 2,成员函数。 3,构造函数。 子类不能继承父类中私有的成员变量和方法 1,成员变量。  当本类成员和局部变量同名用this区分。...super(); 子类实例化过程:子类中所有的构造函数默认都会访问父类中参数构造函数为什么子类实例化时候要访问父类中构造函数呢? ...为什么完成这个必须动作,就在子类构造函数中加入了super()语句。 如果父类中没有定义空参数构造函数,那么子类构造函数必须用super明确要调用 父类中哪个构造函数

71590

《逆袭进大厂》第二弹之C++进阶篇59问59答(超硬核干货)

1) 必须使用成员初始化四种情况 ① 当初始化一个引用成员时; ② 当初始化一个常量成员时; ③ 当调用一个基类构造函数它拥有一组参数时; ④ 当调用一个成员构造函数...构造函数是在创建对象时自动调用,不可能通过父类或者引用去调用,因此就规定构造函数不能是虚函数 (4)析构函数一般都要声明为虚函数,这个应该是老生常谈了,这里不再赘述 《为什么C++不能有虚构造函数,...但是对象a空间还在呀(在析构之前),既然拷贝构造函数,实际上就是把a对象内容复制一份到b中,那么为什么我们不能直接使用a空间呢?...this作用域是在类内部,当在类非静态成员函数中访问类非静态成员时候(全局函数,静态函数不能使用this指针),编译器会自动将对象本身地址作为一个隐含参数传递给函数。...,直接使用 return *this; 另外一种情况是当形参数成员变量名相同时用于区分,如this->n = n (不能写成n = n) 类this指针有以下特点 (1)this只能在成员函数使用

2.2K40

java基础知识总结(绝对经典)

私有的成员:其他类不能直接创建对象访问,所以只有通过本类对外提供具体访问方式来完成对私有的访问,可以通过对外提供函数形式对其进行访问。...成员变量和局部变量区别: 1:成员变量直接定义在类中。 局部变量定义在方法中,参数上,语句中。 2:成员变量在这个类中有效。 局部变量只在自己所属大括号内有效,大括号结束,局部变量失去作用域。...调用成员属性成员方法(一般方法); this对象后面跟上 () 调用是本类中对应参数构造函数。 注意:用this调用构造函数,必须定义在构造函数第一行。...3,静态方法中不能使用this,super关键字。 因为this代表对象,静态在时,有可能没有对象,所以this无法使用。 4,主函数是静态。 什么时候定义静态成员呢?...super():是在调用父类中空参数构造函数为什么子类对象初始化时,都需要调用父类中函数?(为什么要在子类构造函数第一行加入这个super()?)

63700

面试总结-C++

为什么不能建立引用数组 将引用作为函数参数时,可以避免对变量或者对象复制,因此不会调用对象拷贝构造函数。当不希望传入引用参数不被改变时,使用const引用。...例如,被函数返回引用只是作为一个临时变量出现,没有被赋予一个实际变量,那么这个引用所指向空间(由new分配)就无法释放,造成内存泄露。)。 可以返回类成员引用,但最好是const。...### 构造函数和析构函数 1.构造函数、析构函数中都不要调用虚函数 我们知道,构造函数一般不能是虚函数析构函数一般必须是虚函数。...一个系统即使只有一个函数不是异常安全,那么系统作为一个整体就不是异常安全。...4.流对象,资源对象,new对象,不应该直接作为参数,一旦抛出异常,就可能会导致严重问题,函数也许会被错误执行,资源也许会泄漏。 5.减少全局变量使用

2K11

CC++常见面试知识点总结附面试真题—-20220326更新

const修饰成员函数代表不能修改成员变量值,因此const成员函数只能调用const成员函数, 可以访问非const成员,但是不能修改; 4).只读对象。...内联函数函数直接扩展到调用内联函数地方,这样减少了参数压栈,跳转,返回等过程; 4). 由于内联发生在编译阶段,所以内联相较宏,是有参数检查和返回值检查,因此使用起来更为安全; 5)....由于malloc/free是库函数不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数任务强加于malloc/free。...静态成员函数可以访问静态成员变量,但是不能直接访问普通成员变量(需要通过对象来访问);需要注意是普通成员函数既可以访问普通成员变量,也可以访问静态成员变量; 3)....如果拷贝构造函数参数不是当前类引用,而是当前类对象,那么在调用拷贝构造函数时,会将另外一个对象直接传递给形参,这本身就是一次拷贝,会再次调用拷贝构造函数,然后又将一个对象直接传递给了形参,将继续调用拷贝构造函数

1.4K10

C++ 核心编程

如果不想修改实参,就用值传递,如果想修改实参,就用地址传递或者引用传递 引用做函数返回值 作用:引用是可以作为函数返回值存在 注意:不要返回局部变量引用 用法:函数调用作为左值 #include <...这里test2中为什么返回是静态变量引用可以使用,不报错。是静态变量是存在在全局区中。...构造函数:主要作用在于创建对象时为对象成员属性赋值,构造函数由编译器自动调用,无须手动调用。 析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作。...一旦用户定义,则对象在销毁时自动调用。 不同点:虽然他俩都为公开类型。构造可以重载,有多个兄弟,析构却不能重载,但它可以是虚函数,一个类只能有一个析构函数。...this指针不需要定义,直接使用即可 this指针用途: 当形参和成员变量同名时,可用this指针来区分 在类非静态成员函数中返回对象本身,可使用return *this。

2.1K20

C++:22 再议const作用(上)

然而,其值在编译时不能使用,因为编译器在编译时不需要知道存储内容。自然,作为数组大小就不行了。 在函数中声明形参,在函数被调用时会得到实参值。但是如果在类中呢?...,会出错,提示没有初始化const成员变量值 且提示ci是一个只读变量,const用于类中成员变量时,将类成员变为只读属性(只读:不能出现在“=”左边,但在类中仍可以用一个指针来修改其值。)...所以不可以直接在类构造函数中初始化const 成员。...A、作为非静态成员时; B、用于集合时; C、被取地址时; D、在main函数体内部通过函数来获得值时; E、const class或struct有用户定义构造函数、析构函数或基类时;。...return 0; } 要点: 对于优化做比较好编译器,代码const int i = 1; 当后面用到变量i 时候,编译器会优化掉对i 存取,直接使用立即数1 读到这里粉丝可能觉得我这个人比较变态

82920

硬核 | C++ 基础大全

const 应用到函数中:作为参数 const 修饰符:调用函数时候,用相应变量初始化 const 常量,则在函数体中,按照 const 所修饰部分进行常量化,保护了原对象属性。...如果有多个基类,则构造函数调用顺序是某类在类派生表中出现顺序,不是它们在成员初始化表中顺序。 成员类对象构造函数。...如果有多个成员类对象则构造函数调用顺序是对象在类中被声明顺序,不是它们出现在成员初始化表中顺序。 派生类构造函数。...一个对象以值传递方式从函数返回,需要执行拷贝构造函数创建一个临时对象作为返回值。 一个对象需要通过另外一个对象进行初始化。 为什么拷贝构造函数必需时引用传递,不能是值传递? 为了防止递归调用。...当初始化一个引用成员变量时; 初始化一个 const 成员变量时; 当调用一个基类构造函数构造函数拥有一组参数时; 当调用一个成员构造函数,而他拥有一组参数; 编译器会一一操作初始化列表,以适当顺序在构造函数之内安插初始化操作

1.1K10

【C++】类和对象核心总结

class定义成员默认是私有的,类内不被限制,类外不可以直接获取到类中变量,也就是类中数据,这也正是面向对象语言一大特性,封装,你只能通过类中函数来访问数据,不可以直接访问到类里面的数据...全局作用域: 全局就是指,在一个工程中不同文件之间都可以使用你所定义全局变量或全局函数,也就是在整个程序中都可以使用,额外补充一个点,加static修饰全局变量或全局函数,他们由之前外部链接属性改为内部链接属性...拷贝构造函数构造函数一个重载形式。 b. 拷贝构造函数参数只有一个且必须是类类型对象引用,使用传值方式编译器直接报错,因为会引发无穷递归调用。...作为成员函数重载时候,参数其实是要少一个,因为左操作数所对应参数是隐藏this指针。...之前我们所学构造函数可以给新创建对象赋初值,这点我们是知道,但是它并不是成员变量初始化,而是赋值工作。 因为初始化只能初始一次,构造函数赋值是可以赋值多次

67330

夯实Java基础系列18:深入理解Java内部类及其实现原理

内部类是指在一个外部类内部再定义一个类。内部类作为外部类一个成员,并且依附于外部类存在。..., 参数类型是外部类类型, 在构造方法内部使用这个参数为1中添加成员变量赋值;   3 在调用内部类构造函数初始化内部类对象时, 会默认传入外部类引用。...1 成员内部类 之所以叫做成员 就是说他是类实例一部分 不是一部分 2 结构上来说 他和你声明成员变量是一样地位 一个特殊成员变量 静态变量是类一部分和实例无关 3 你若声明一个成员内部类...,而是利用自身构造器对传入参数进行备份,自己内部方法调用实际上时自己属性不是外部方法传递进来参数。...直到这里还没有解释为什么是final 在内部类中属性和外部方法参数两者从外表上看是同一个东西,但实际上却不是,所以他们两者是可以任意变化,也就是说在内部类中我对属性改变并不会影响到外部形参,然这从程序员角度来看这是不可行

1.2K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券