如何防止在 C++ 中创建对象
Posted
技术标签:
【中文标题】如何防止在 C++ 中创建对象【英文标题】:How to prevent the creation of an object in C++ 【发布时间】:2021-09-16 09:15:52 【问题描述】:我正在学习如何制作类,我想阻止我的用户在不提供变量的情况下创建对象。问题是我不知道如何进行才能做到这一点。这是我的代码:
class KoalaNurse
public:
int id; // the var that i need to provide in order to create a new object if it's not provided it wont create the object
void giveDrug(std::string gato, SickKoala *patient)
patient->takeDrug(gato);
~KoalaNurse()
std::cout << "Nurse " << id << ": Finally some rest !" << std::endl;
;
求任何帮助!
【问题讨论】:
你需要了解构造函数 【参考方案1】:您需要定义自己的构造函数,以便编译器不会创建默认构造函数。
KoalaNurse (int some_value)
//your code
;
另一种选择是使用关键字delete
以防止创建默认构造函数:
KoalaNurse() = delete;
【讨论】:
哦,我知道我不知道构造函数是这样工作的! 我无法自动取款,我需要等待 5 分钟【参考方案2】:在这种情况下,您希望提供用户定义的构造函数。
class KoalaNurse
public:
explicit KoalaNurse( int id )
: id_ id
private:
int id_;
;
int main( )
KoalaNurse nurse 10 ;
使用构造函数,为了实例化您的class
,您必须提供id
。
【讨论】:
你真的可以用explicit
构造函数来做KoalaNurse nurse10;
吗?我以为你需要KoalaNurse nurse(10);
。
@j6t 不,它按预期工作。这里的explicit ctor
只会阻止implicit
转换。因此,您将无法将 int
传递给采用 KoalaNurse
的函数并将其 implicitly
转换为 KoalaNurse
。以上是关于如何防止在 C++ 中创建对象的主要内容,如果未能解决你的问题,请参考以下文章