构造函数总结(选择题)


1.下列说法哪个正确?
 所有类都必须定义一个构造函数
 构造函数必须有返回值
 构造函数可以访问类的非静态成员
 构造函数必须初始化类的所有数据成员

C是对的
A:所有类都会“有”构造函数,但是并不“必须定义”
B:构造函数没有返回值
C:构造函数可以访问所有的成员,无限制
D:构造函数不需要初始化类的所有数据成员,初始化成员可以在定义成员变量时初始化,可以在构造函数内初始化,也可以在使用时初始化(成员不为final时)


2.下面说法正确的是()
a)类必须显示定义构造函数
b构造函数的返回类型是void
c构造函数和类有相同的名称,并且不能带任何参数
d一个类可以定义很多个构造函数

选D。
A .不用显示(也就是显式)定义构造函数,如果你定义一个类,类中没有构造函数是不会出错的,类中有一个默认的无参构造函数。
B.构造函数没有返回类型。
C.构造函数可以带参数,无参,一个参数,二个参数都行。


下面关于构造函数的说法不正确的是(            )
A、构造函数也属于类的方法,用于创建对象的时候给成员变量赋值。
B、构造函数不可以重载。
C、构造函数没有返回值。
D、构造函数一定要和类名相同。

A构造函数不只是给成员变量赋值,因此不正确
B显然错的
C有点模糊,构造函数定义时没有返回值,但实际上是返回了实例对象的
D没有错

如果是单选,肯定选B
如果是多选,建议选AB



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ 中的拷贝构造函数是一种特殊的构造函数,用于在创建一个对象时,以另一个对象作为参数来初始化它。拷贝构造函数的声明如下: ```cpp class MyClass { public: MyClass(const MyClass& other); }; ``` 其中,other 是要拷贝的对象的引用。拷贝构造函数通常用于以下几种情况: 1. 通过值传递对象时,会调用拷贝构造函数来创建一个新的对象。 2. 在函数返回一个对象时,会调用拷贝构造函数来创建一个副本。 3. 在一个对象初始化另一个对象时,会调用拷贝构造函数。 在 C 语言中,没有拷贝构造函数的概念,但可以通过自己实现一些函数来模拟拷贝构造函数的功能。例如: ```c typedef struct { int x; int y; } Point; void point_copy(Point* dest, const Point* src) { dest->x = src->x; dest->y = src->y; } Point point_create(int x, int y) { Point p; p.x = x; p.y = y; return p; } int main() { Point p1 = point_create(1, 2); Point p2; point_copy(&p2, &p1); return 0; } ``` 在这个示例中,我们定义了一个 Point 结构体,并通过 point_create() 函数来创建一个 Point 对象。我们还定义了一个 point_copy() 函数,用于将一个 Point 对象拷贝到另一个对象中。在 main() 函数中,我们通过调用 point_copy() 函数来拷贝 p1 对象到 p2 对象中。 需要注意的是,在 C 语言中,拷贝构造函数的实现需要自己手动编写,而且需要特别注意内存管理,避免出现内存泄漏等问题。在 C++ 中,拷贝构造函数由编译器自动生成,可以方便地实现对象的拷贝。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值