如何为函数指定函数的正常返回值?
例如,我想指定此static
成员函数的返回值:
int AnotherClass::getInt();
在以下表达式中:
// m_ipA is a private member of the class `Class`
int *m_ipA;
// Lots of things in between, then :
void Class::printOutput() {
m_ipA = AnotherClass::getInt();
// Some operations on m_iPA here, then
// Print instructions here
}
我是否需要在构造函数中使用m_ipA
关键字初始化new
?
提前致谢。
答案 0 :(得分:2)
这样做:
m_ipA = new int; //do this also, if you've not allocated memory already.
*m_ipA = AnotherClass::getInt();
您可能希望在类的构造函数中分配内存:
Class::Class() //constructor
{
m_ipA = new int; //allocation
}
void Class::printOutput()
{
*m_ipA = AnotherClass::getInt();
}
Class::~Class() //destructor
{
delete m_ipA; //deallocation
}
编辑:
正如MSalters提醒的那样:当你在课堂上指点时,不要忘记复制ctor和作业(Rule of Three)。
或者mabye,你不希望指向int 。我的意思是,以下内容可能适合您:
int m_int;
m_int = AnotherClass::getInt();
注意m_int
不是指针。
答案 1 :(得分:2)
如果m_ipA
没有指向任何有效的内存位置,那么您需要分配如下内存:
m_ipA = new int(AnotherClass::getInt());
答案 2 :(得分:0)
m_ipA = new int;
*m_ipA = AnotherClass::getInt();
//Use m_ipA
delete m_ipA; //Deallocate memory, usually in the destructor of Class.
或使用某些RAI,例如auto_ptr。忘记释放内存。
答案 3 :(得分:-1)
不,你没有拥有 - 只是确保你取消引用指针!
*m_ipA = AnotherClass::getInt();
如果你打算不断修改m_ipA