C ++:为指针指定正常返回值

时间:2011-04-11 10:47:50

标签: c++ pointers return

如何为函数指定函数的正常返回值?

例如,我想指定此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

提前致谢。

4 个答案:

答案 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

,你真的应该这样做