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

为什么构造函数不返回值?

构造函数不返回值是因为它们的主要目的是初始化对象的状态,而不是生成一个新的对象实例。在面向对象编程中,构造函数用于创建和初始化一个新的对象实例。当一个构造函数被调用时,它会为对象分配内存,并为其成员变量赋予初始值。

在许多编程语言中,构造函数的名称与类名相同,并且没有返回类型。在C++中,构造函数没有返回值,因为它们使用关键字return来表示对象的内存地址。在Java中,构造函数也没有返回值,因为它们使用关键字this来表示对象的引用。

如果构造函数返回一个值,那么它将不再是一个构造函数,而是一个普通的函数,它可能会导致对象初始化的问题。因此,为了确保对象的正确初始化,构造函数不应该返回任何值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

构造函数没有返回值是怎么赋值的?

众所周知,在java里是不能给构造函数返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法。...可是如果构造函数没有返回值,那么比如Test t = new Test()我们new一个对象的时候是怎么赋值的呢?...构造函数返回值吗 写一段代码测试一下: public class Test { public Test() { } public static void main...一个类或者接口最多可以包含超过一个类或接口的初始化方法,类或者接口就是通过这个方法完成初始化的。这个方法是一个包含参数的静态方法,名为clinit。...init代表着虚拟机调用构造函数,现在情况很明显,构造函数返回类型是void,那么它究竟是怎么赋值的呢?

1.7K20

为什么构造函数不能为虚函数

1、从使用角度         虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀。所以构造函数没有必要是虚函数。...虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。...2、从实现上看,vbtl在构造函数调用后才建立,因而构造函数不可能成为虚函数    从实际含义上看,在调用构造函数时还不能确定对象的真实类型(因为子类会调父类的构造函数);而且构造函数的作用是提供初始化...V P T R的状态是由被最后调用的构造函数确定的。这就是为什么构造函数调用是从基类到更加派生 类顺序的另一个理由。        ...但是,当这一系列构造函数调用正发生时,每个构造函数都已经设置V P T R指向它自己的 V TA B L E。

2.3K91
  • 构造函数没有返回值是怎么赋值的?

    个人原创100W+访问量博客:点击前往,查看更多 转自:艾小仙 众所周知,在java里是不能给构造函数返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法。...可是如果构造函数没有返回值,那么比如Test t = new Test()我们new一个对象的时候是怎么赋值的呢?...构造函数返回值吗 写一段代码测试一下: public class Test { public Test() { } public static void main...一个类或者接口最多可以包含超过一个类或接口的初始化方法,类或者接口就是通过这个方法完成初始化的。这个方法是一个包含参数的静态方法,名为clinit。...init代表着虚拟机调用构造函数,现在情况很明显,构造函数返回类型是void,那么它究竟是怎么赋值的呢?

    1.7K20

    Java构造函数没有返回值,是怎么赋值的?

    众所周知,在java里是不能给构造函数返回值的,如果在低版本的编译器定义一个构造器写上返回值可能会报错,高版本里面他就是一个普通的方法。...可是如果构造函数没有返回值,那么比如Test t = new Test()我们new一个对象的时候是怎么赋值的呢?...构造函数返回值吗 写一段代码测试一下: public class Test { public Test() { } public static void main...一个类或者接口最多可以包含超过一个类或接口的初始化方法,类或者接口就是通过这个方法完成初始化的。这个方法是一个包含参数的静态方法,名为clinit。...init代表着虚拟机调用构造函数,现在情况很明显,构造函数返回类型是void,那么它究竟是怎么赋值的呢?

    2.1K00

    C++构造函数 | 构造函数

    C++构造函数的作用 C++提供了构造函数来处理对象的初始化,构造函数是一 种特殊的成员函数,与其他成员函数不同,不需要程序员来调用它,而是在建立对象时自动执行。...构造函数的名字必须与类名同名,而不能由程序员任意命 ,以便编译系统能识别它并把它作为构造函数处理,构造函数不具有任何类型,返回任何值,它的功能是由程序员定义,程序员根据初始化的要求设计函数体和函数参数...关于构造函数,以下5点需要读者注意:  在类对象进入其作用域时调用构造函数构造函数没有返回值,不需要在定义构造函数时声明类型。 构造函数不需要程序员调用,也不能被程序员调用。...在构造函数函数体中不仅可以对数据成员赋初值,而且可以包含其他语句。...如果用户自己没有定义构造函数,则C++编译系统会自动生成一个构造函数,只是这个构造函数函数体是空的,也没有参数,执行初始化操作。

    2.2K74

    Python 为什么没有 main 函数为什么推荐写 main 函数

    本期“Python 为什么”栏目来聊聊 Python 为什么没有 main 函数? 在开始正题之前,先要来回答这两个问题:所谓的 “main 函数”是指什么?...为什么有些编程语言需要强制写一个 main 函数?...函数最多只能有一个,也就是说程序的入口是唯一的 语法格式有一定的要求,具有相对固定的模板 为什么要强制一个main入口函数呢?...推荐阅读:Python 中 -m 的典型用法、原理解析与发展演变 推荐写if __name__ == '__main__'。首先,如果只有一个文件的话,因为不存在导出的可能,建议写。...小结:本文首先解释了什么是 main 入口函数,以及为什么某些语言会强制要求写 main 函数;接着,解释了为什么 Python 不需要写 main 函数;最后则是针对某些人存在的惯性误区,分享了我个人的四点编程经验

    2.4K31

    【Kotlin】Kotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始化代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )

    构造函数 II . 主构造函数声明属性 III . init 初始化代码块 IV . 主构造函数参数 和 成员变量访问方式 V . 主构造函数 可见性 设置 VI ....次构造函数 ( 常用情况 ) VII . 次构造函数 ( 没有主构造函数 ) VIII . 构造函数 代码执行顺序 IX . 调用 主构造函数 / 次构造函数 创建类实例对象 I ....主构造函数 ---- 1 . 构造函数个数 : Kotlin 类定义时需要指定主构造函数 , 还可以指定 0 ~ 多个次构造函数 ; 2 ...., 类属性字段在类体中定义 ; /* 主构造函数声明属性 ; */ class Student constructor(name : String, age : Int){ var...; /* 主构造函数声明属性 ; */ class Student constructor(var name : String, var age : Int){ } III . init

    3.8K10

    【JavaScript】函数 ④ ( 函数返回值 | 函数返回值语法 return 关键字 | 函数默认返回值 undefined )

    一、JavaScript 函数返回值 1、函数返回值引入 JavaScript 函数 可以 实现某种特定的功能 , 执行完毕后 , 可以返回一个 " 返回值 " ; 当 函数 被调用执行任务完毕时 ,..." 返回值 " 会被返回给调用者 ; 如果 函数 中没有明确 使用 return 关键字 返回 " 返回值 " , 那么函数会默认返回undefined 值 ; 2、函数返回值语法 在 JavaScript...中 , 函数 返回值是 通过 return 语句实现 , 在函数体 中 使用 return 语句 指定函数返回的值 , 使用 return 语句后 会立即终止函数的执行 , return 返回值 语法如下..., 不需要在 函数 声明中注明 返回值类型 ; 3、函数默认返回值 在下面的代码中 , 定义了 add 函数 , 并且该函数没有 显示使用 return 关键字 返回返回值 ; 此时 执行 add 函数...> 执行结果 : 打印出来的 函数返回值 是 undefined 未定义值 ; 4、函数默认返回值 在下面的代码中 , add 函数 中 使用 return 关键字 返回返回值

    24310

    【C++】构造函数调用规则 ( 默认构造函数 | 默认无参构造函数 | 默认拷贝构造函数 | 构造函数调用规则说明 )

    一、默认构造函数 C++ 类中 2 种特殊的构造函数 , 分别是 : 默认无参构造函数 : 如果 C++ 类中 没有定义构造函数 , C++ 编译器会自动为该类提供一个 " 默认的无参构造函数 " ,...; 1、默认无参构造函数 如果 C++ 类中 没有定义构造函数 , C++ 编译器会自动为该类提供一个 " 默认的无参构造函数 " , 函数体为空 , 不做任何操作 ; 没有定义构造函数 : 如果...没有为 C++ 类定义 构造函数 , C++ 编译器 将自动为该类 生成一个默认的无参构造函数 ; 定义了构造函数 : 如果为 C++ 类 定义了其他类型的构造函数 ( 有参构造函数 / 无参构造函数...obj; // 调用默认无参构造函数 MyClass obj2 = obj; // 调用默认拷贝构造函数 二、构造函数调用规则 ---- 1、构造函数规则说明 构造函数调用规则 : 提供 默认无参构造函数...定义了 非拷贝构造函数 , 如 : 有参构造函数 / 无参构造函数 , C++ 编译器 不会提供 默认的无参构造函数 , 但是 会提供 默认的 拷贝构造函数 ; 默认的 拷贝构造函数 只能进行 成员变量的

    1K30

    js 中的构造函数构造函数作用,构造函数和普通函数的区别

    2、如果直接调用函数,那么,this对象指向window,并且,不会默认返回任何对象(除非显性声明返回值)。...4、构造函数返回值 构造函数执行过程的最后一步是默认返回 this 。言外之意,构造函数返回值还有其它情况。 没有手动添加返回值,默认返回 this。...所以,虽然封装构造函数的过程会比较麻烦,但一旦封装成功,我们再创建对象就会变得非常轻松,这也是我们为什么要使用构造函数的原因。...逐个执行函数中的代码 D、将新建的对象作为返回值 6、构造函数返回值默认是this 也有其他情况 。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.5K10

    【Rust问答】关于函数写return时候返回值的疑惑

    fn r(n: i32) -> i32 { if n > 0 { 0 } 1 } 像上面这个函数,编译会报错,如下: | 2 | / if n >...-- help: consider using a semicolon here | |_____| | expected this to be `()` 看的出来编译器认为这个函数返回的是...unit (),而if里面的0却是integer,所以报错了 我知道下面2种做法可以编译通过: 把1放进else里面 在0前面显式的加上return 现在问题来了: 这个编译不通过的函数,我标注了返回类型为...i32,而且函数体内怎么看返回的也不是()啊,为什么编译器会认为返回的是()类型呢?...if n > 0 { 0 } 和 1 因为没有else,所以它不认为if 代码块是表达式的一部份 所以做为函数返回值的是 1 这个表达式 第一个语句中的代码块的最后一行是表达式,但其它本身又不是条件赋值语句

    2.7K20

    为什么不允许使用 Java 静态构造函数

    不允许使用 Java 静态构造函数,但是为什么呢?在深入探讨不允许使用静态构造函数的原因之前,让我们看看如果要使 构造函数静态化 会发生什么。...因此,如果我们将构造函数设置为静态,则无法初始化对象变量。这将破坏使用创建对象的构造函数的全部目的。因此,使构造函数为非静态是合理的。 注意,我们不能this在静态方法中使用引用对象变量。...我们可以定义一个类层次结构,其中子类构造函数调用超类构造函数。这是通过super()方法调用完成的。大多数情况下,JVM自动调用超类构造函数,但有时如果超类中有多个构造函数,我们必须手动调用它们。...count is class variable //and shared among all the objects of the class count=c; } } 总结 我们说明了为什么不允许使用...Java静态构造函数

    3.1K80

    【C++】拷贝构造函数调用时机 ② ( 对象值作为函数参数 | 对象值作为函数返回值 )

    博客总结 : " 拷贝构造函数 " 又称为 " 赋值构造函数 " , 该类型构造函数有 4 种调用时机 ; ① 使用一个对象初始化另外一个对象 : 使用 一个 类实例对象 初始化 另外一个 类实例对象...指针 或 引用 的方式 ; // 定义函数, 接收 Student 对象值作为参数 void fun(Student s) { } ④ 对象值作为函数返回值 : 函数直接返回类的实例对象 值 , 不是返回...指针 或 引用 ; // 定义函数, 返回 Student 对象值作为返回值 Student fun() { Student s1(18, 170); return s1; } 一、拷贝构造函数概念...三、对象值作为函数返回值 ---- 1、拷贝构造函数调用情况说明 函数直接返回类的实例对象 值 , 不是返回 指针 或 引用 ; 下面的代码 , 定义了函数 , 返回在函数内部创建的 Student 类实例对象..., 在栈内存中的 Student 对象也会被销毁 , 因此 Student 类型的返回值需要返回一个副本 , 这个副本需要调用 拷贝构造函数 创建 ; 2、代码示例 - 对象值作为函数返回值 代码示例

    22420

    【C++】构造函数分类 ① ( 构造函数分类简介 | 无参构造函数 | 有参构造函数 | 拷贝构造函数 | 代码示例 - 三种类型构造函数定义与调用 )

    一、构造函数分类 1、构造函数分类简介 C++ 构造函数可以分为以下几类 : 无参构造函数 : 最简单也是默认的构造函数 , 函数没有参数 , 如果创建一个对象 , 没有传入参数 , 调用的就是该类型的...构造函数 ; 有参构造函数 : 带参数的 构造函数 , 创建 实例对象 时 , 为成员变量提供初始值 ; 拷贝构造函数 : 拷贝现有 实例对象 , 并以此拷贝的副本为数据 创建一个新的 实例对象 ,...<< "name : " << s1.m_name << " , age : " << s1.m_age << endl; 有参构造函数 有参构造函数 : 可以将 为 成员变量 赋值的数据放在 构造函数...; 拷贝构造函数 拷贝构造函数 : 拷贝构造函数 也是 有参构造函数 中的一种 , 传入的是 相同类型的 常量引用 , 该引用指向的内容在函数内不可修改 ; 在 " 拷贝构造函数 " 中 , 主要读取..." << endl; } 二、代码示例 - 三种类型构造函数定义与调用 ---- 在下面的代码中 , 分别在 Student 类中定义了 无参构造函数 有参构造函数 拷贝构造函数 分别调用了上述三种类型的

    37810

    JavaScript 构造函数

    JavaScript 构造函数的作用是什么?构造函数是一个唯一的函数,用于创建和初始化类的对象实例。在 JavaScript 中,当使用 new 关键字创建对象时,构造函数会被调用。...在 JavaScript 中,当调用构造函数时,会执行以下步骤: 创建一个新的空对象。 this 关键字开始引用新对象,并将其作为当前实例对象。 然后将新对象作为构造函数返回值返回。...由于函数关键字的工作方式与其他函数一样,因此可以使用它来定义构造函数。但是,构造函数遵循以下准则: 使用大写字母在构造函数名称中,以使其与其他函数区分开。 构造函数如何使用 this 关键字有所不同。...这是构造函数内部引用将要生成的新对象。 与 JavaScript 函数不同,构造函数定义属性和操作,而不是返回值。...使用基于参数的构造函数 构造函数可以扩展以接受参数。如果要开发灵活、响应灵活的代码,这是至关重要的。当从一个构造函数创建对象时,该对象将始终继承构造函数中声明的所有属性。

    18720

    stat()函数_stat函数返回值

    stat 函数将会帮助我们得到这些信息。 1 stat 函数 1.1 stat 函数的作用 linux 中,可以使用 stat 函数来获取文件相关的信息,就比如说文件的大小,文件的类型等等。...1.2 struct stat 结构体 stat 函数将获取到的结果保存到一个名为 struct stat 的结构体中。...stat 函数返回值如果是 0,表示函数执行成功,否则失败。失败后会改写 errno 这个全局变量。我们可以使用 perror 这个函数打印失败的原因。...3 更加深入 掌握了 stat 函数的用法,相信你不应该止步于此。我们提出的问题是,stat 函数是从哪儿获取到文件信息的?...但是为了让你获取一些必要的信息,linux 提供了一些接口给你使用,比如这里的 stat 函数。 4 小结 本节你需要掌握 stat 函数,并打印出这些整数值。

    3.3K20

    何为构造函数

    Java构造函数,也叫构造方法,是Java中一种特殊的函数函数名与对应类名相同,无返回值构造函数的作用 先不去管这个构造函数是什么,我们先来了解这个玩意有什么用!...构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会自动调用构造函数并完成参数的初始化。...我们上面就说了,为何需要构造方法呢?——>构造函数的最大作用就是创建对象时完成初始化。...构造函数规则 最后在说一说构造函数需要的规则。...构造函数与类同名 每个类可以有一个以上的构造函数 构造函数可以有0 个 、 1 个或多个参数 构造函数没有返回值 构造函数总是伴随着new操作一起调用 带参构造 大家理解之后,发现。

    78730

    javascript构造函数

    我们相约在今天,在今天讨论javascript构造函数,感谢你如约而至 昨天 我们昨天前几天讨论过构造函数constructor,得出了结论 constructor是原型对象上的一个属性,默认指向这个原型的构造函数...这个结论貌似对我们平时的工作中似乎并没有什么用处,那构造函数,就真的没什么用处吗?...今天 使用构造函数构造可以复用的对象 JS中的函数即可以是构造函数又可以当作普通函数来调用,当使用new来创建对象时,对应的函数就是构造函数,通过对象来调用时就是普通函数。 ?...); } //通过构造函数Person实例化一个p1,并传参 var p1 = new Person('postbird','earth'); //通过构造函数Person实例化一个p2,并传参 var...); console.log(one.constructor===Father) // true 注意这一行代码 Father.prototype.constructor = Father;//修正 为什么要修正

    1K30
    领券