在C++中,setter、getter和构造函数之间有什么区别



如果我们使用构造函数,我们需要使用setter和getter。我完全搞不清这些术语,有人能详细说明一下吗。

如果我们使用构造函数,我们需要使用setter和getter 吗

首先,你不能有一个没有构造函数的类,当你不提供任何编译器时,它会为你生成它们。无论是否定义自己的构造函数,都不应该使用不相关的setter和getter。当你设计一个类时,你设计它的接口,然后添加成员变量来实现该行为,这些成员是该类的内部表示,外部世界不应该意识到它们——这就是数据封装的目的,这就是我们将它们设为私有或受保护的原因。当您先添加成员,然后盲目地提供getter和/或setter时,这是一种错误的OOD方法。

使用构造函数创建对象。使用getter从已经存在的对象中获取信息。使用setter可以更改已存在的对象。

任何特定的类都可能需要其中的一个或多个,但并不是每个类都需要所有这些。特别是不可变的类在创建后不能修改,因此不需要setter。

这两件事非常不同。

构造函数是系统在创建对象时调用的函数。如果您自己没有定义一个,编译器将提供一个默认的。无论发生什么情况,对于您创建的每个对象,构造函数都会被调用一次。它的目的通常是为类的所有成员设置有效值。

相比之下,getters

setters希望构造函数与set/getter之间的区别能很清楚。

相关内容

最新更新