gpt4 book ai didi

c++ - 我们可以直接给任何数据成员赋值。为什么要使用构造函数?

转载 作者:搜寻专家 更新时间:2023-10-31 01:24:45 26 4
gpt4 key购买 nike

我赋值数据成员为什么要用构造函数??

我无法创建类构造函数并且我分配了我的变量的值并且我的代码在没有创建构造函数的情况下运行??那么为什么要使用构造函数

我的问题是我们可以直接给任何数据成员赋值。看我的代码:

#include <iostream>
#include <conio.h>

class calculator {
public:
int n1=100;
char grade='a';

// public:

// calculator()
// {
// grade='a';
// n1=100;

// }

void display()
{
std::cout << "first value:" <<grade<< std::endl;
std::cout << "second value:" <<n1<< std::endl;
}

};
int main()
{
calculator cal;
cal.display();
return 0;
}

o/p 是:

  • 第一个值:a
  • 第二个值:100

什么时候

#include <iostream>
#include <conio.h>

class calculator {


int n1;
char grade;

private:

calculator()
{
grade='A';
n1=100;

}

void display()
{
std::cout << "first value:" <<grade<< std::endl;
std::cout << "second value:" <<n1<< std::endl;
}

};
int main()
{
calculator cal;
cal.display();
return 0;
}

突然我想访问私有(private)数据成员,例如(员工薪水),那么如何访问私有(private)数据??

最佳答案

构造函数的工作是初始化对象,使其处于一致可用的状态。这意味着它应该确保所有成员都具有合理的初始值,并且应该建立类不变量。

如果您不使用构造函数而是在每次创建对象时都手动初始化成员,那么您首先会在所有地方重复该工作,其次您有时可能会忘记初始化某些东西 - 这会让对象处于不一致的状态。

另外,大多数成员应该是public(因为这样你就无法控制他们的访问/修改方式)以及何时是private,构造函数(或类内初始化)是初始化它们的唯一方法。

关于c++ - 我们可以直接给任何数据成员赋值。为什么要使用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57746334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com