我给数据成员赋值为什么需要使用构造函数?
我无法创建类构造函数,并且我分配变量的值并且我的代码在不创建构造函数的情况下运行?那么为什么要使用构造函数
我的问题是我们可以直接为任何数据成员赋值。看我的代码:
#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/