首页 > 试题广场 >

请问下列关于构造函数的说法中,哪一种不正确?

[单选题]
请问下列关于构造函数的说法中,哪一种不正确?
  • 构造函数可以为const函数
  • 构造函数不能为虚函数
  • 默认构造函数不会初始化复合类型成员变量
  • 类的成员变量在构造函数中初始化
const函数不改变成员变量,而构造函数意义在于初始化
发表于 2017-02-16 06:51:57 回复(0)
因为构造函数的目的就是要给成员变量赋初值,如果定义成const类型,其成员变量就是不能改变的,所以构造函数是不能为const函数的。
当然编译器也是不允许这样的,这是我在vs10上做测试。
发表于 2017-05-23 16:13:41 回复(0)
NJ头像 NJ
静态成员变量不是在类外初始化的吗,静态成员变量不属于成员变量?
发表于 2017-07-10 22:22:35 回复(1)
C选项:默认构造函数不会初始化复合类型成员变量(不会调用“复合类型成员变量”的默认构造函数吗)
编辑于 2017-08-08 16:17:18 回复(0)
构造函数要给成员变量赋初值,所以不能是const 
发表于 2017-05-25 15:14:36 回复(0)
D也不全对,没有考虑const和static成员
发表于 2021-07-12 20:48:04 回复(0)
构造函数不能声明为虚函数的主要原因是,虚函数的调用是通过对象的虚函数表(vtable)来实现的,而在对象构造过程中,虚函数表还未被创建。 在C++中,虚函数的调用是通过指针或引用来实现的,即使在基类指针或引用指向派生类对象时,也能正确地调用派生类的虚函数。这是因为每个对象都有一个隐藏的指向虚函数表的指针,通过该指针可以动态地确定要调用的虚函数。 然而,在对象的构造过程中,从基类到派生类的构造函数被依次调用,这意味着对象的派生类部分还没有被完全构造。此时,虚函数表还不存在,因此无法正确地进行虚函数调用。 此外,构造函数的目的是初始化对象的状态,确保对象能够正确地使用。由于虚函数表在对象构造过程中尚不存在,如果构造函数声明为虚函数,将导致在构造过程中发生不可预测的行为或错误。 综上所述,构造函数不能声明为虚函数是为了避免在对象构造过程中出现问题,并确保对象的正确初始化。
发表于 2023-08-12 19:47:35 回复(0)
构造函数不能为虚函数。 虚函数是用于实现多态性的一种机制,它允许在基类中声明函数,在派生类中重新定义或覆盖该函数。为了支持多态性,虚函数在运行时会动态地绑定到正确的函数实现上。因此,虚函数的调用需要在运行时进行,而构造函数需要在对象创建时调用,它们的调用时机是不同的。 此外,构造函数是用于初始化对象的方法,当一个派生类的对象被创建时,其基类的构造函数也需要被调用,以确保基类的成员得到正确的初始化。如果构造函数是虚函数,派生类的构造函数将不能调用其基类的构造函数,这将导致初始化错误。 因此,C++语言规定构造函数不能是虚函数。虽然编译器不会报错,但如果将构造函数声明为虚函数,将会创建一些潜在的问题。一般来说,如果需要在构造函数中实现多态性的机制,可以使用其他方式,比如将构造函数参数化,或使用虚构函数。
发表于 2023-05-09 18:01:19 回复(1)
构造函数得要初始化成员变量,设置成为const就无法接通初始化成员变量了,这就矛盾了。
发表于 2021-03-09 11:27:59 回复(0)
const函数不能改变成员变量,而构造函数用于给成员变量赋值。
发表于 2020-12-24 17:40:24 回复(0)
什么是符合类型成员变量
发表于 2017-08-09 09:10:52 回复(0)