请给出一个完美的例子。 在下面的程序中,为什么我们需要构造函数,而我们可以通过函数做同样的事情。 (假设我们通过main())传递一些值
#include<iostream>
using namespace std;
class name {
private:
int roll_num;
char grade;
public:
void set_roll(int data); /* function to get the values of roll num and grade */
void set_grade(char grade_1);
void display(void);
.
.
name(int ..., char ....) /* constructor for the same thing as function doing */
答案 0 :(得分:5)
某些成员需要在初始化时设置,如果要设置类的常量成员,则必须在构造函数中完成,例如:
class A{
const int a;
A(int b):a(b){}
};
答案 1 :(得分:2)
构造函数允许您将类类型对象视为不透明值,而无需了解或维护其内部。
考虑这个例子:
std::vector<std::string> v;
void save(std::string s)
{
v.push_back(std::move(s));
}
我们可以将此函数称为save("Hello world")
,我们可以将参数视为不透明的值。这是因为类std::string
具有执行必要操作以创建内部状态并将状态传递到向量中的元素的构造函数。用户永远不需要知道这一点,也不负责保持内部状态的一致性。
对象不仅仅是他们的状态。他们还定义了修改状态的方法。构造函数是其中的一个基本部分。
答案 2 :(得分:1)
构造函数在创建时准备新对象。它可用于将变量设置为默认值或用户输入参数。
使用函数来设置变量值,需要额外的步骤。这可以在对象创建期间通过包含参数值来完成。