gpt4 book ai didi

c++ - 在构造之前调用实例上的非成员函数

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

我正在写一个类,这个疑惑就上来了。这是undef吗?行为?另一方面,我不确定它是否被推荐,或者它是否是一个好习惯。如果我确保在 init 函数中不抛出异常,这是一种吗?

//c.h
class C{

float vx,vy;
friend void init(C& c);
public:
C();

};


//c.cpp
C::C()
{
init(*this);
}

void init(C& c) //throws() to ensure no exceptions ?
{
c.vx = 0;
c.vy = 0;
}

提前致谢

最佳答案

完全没问题。一旦进入构造函数的主体,所有成员都已初始化并可以使用。 (然后主体将完成创建完整构造的对象所需完成的任何更多工作。)

但这是糟糕的风格。更好的是:

C::C() :
vx(), vy() // or vx(0), vy(0) if you prefer to be explicit
{}

并消除所有的困惑。


异常与安全无关,构造函数可以随意抛出。事实上,如果您无法成功构造一个对象,那么抛出异常是首选的做法。

关于c++ - 在构造之前调用实例上的非成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2642691/

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