📜  C ++ |构造函数|问题13(1)

📅  最后修改于: 2023-12-03 15:29:42.456000             🧑  作者: Mango

C++ | 构造函数 | 问题13

简介

在 C++ 中,构造函数用于初始化对象的属性或成员变量。在对象被创建时,构造函数自动调用,并执行所需的初始化操作。本文将讨论一个常见的构造函数问题:如何编写一个构造函数,使其能够接受不同类型的参数并正确初始化对象。

问题描述

考虑一个名为 Rectangle 的类,该类表示一个矩形。这个类包含以下数据成员:

  • width:矩形的宽度
  • height:矩形的高度

现在,假设要编写一个构造函数,使其能够接受以下两种类型的参数:

  • 两个整数:分别表示矩形的宽度和高度
  • 一个整数:表示正方形的边长,此时应将宽度和高度均设置为相同的值

你该如何编写这样一个构造函数?

解决方案

一个可能的解决方案是编写两个构造函数,分别接受两个整数和一个整数参数。这两个构造函数可以使用默认参数来避免出现代码重复。

class Rectangle {
    int width, height;
public:
    Rectangle(int w, int h = 0) {
        width = w;
        height = h ? h : w; // 如果h为0,将height设置为w,否则设置为h
    }
};

这个构造函数的作用如下:

  • 如果 h 参数未提供,将 height 设置为 0
  • 如果 h 参数提供了一个非零的值,将 height 设置为它。
  • 如果 h 参数提供了一个零值,将 height 设置为与 width 相等的值。

这个构造函数使用了三目运算符来避免出现分支语句。这个构造函数能够正确地处理这两种情况:

Rectangle rect1(10, 20); // 宽度10,高度20
Rectangle rect2(10); // 宽度10,高度10
总结

构造函数是用于初始化 C++ 对象的关键部分。在本文中,我们讨论了如何编写一个接受不同类型参数的构造函数,以初始化矩形对象的属性。使用默认参数和三目运算符,我们成功地实现了这个目标。

如果有任何问题或建议,请在评论中留言。