关于函数返回值类型问题
我编写了一个矩阵类
类中的数据成员有m_row(行数),m_column(列数),m_p(指针),构造函数对三个数据成员进行初始化,其中m_p指向使用new申请的m_row*m_column的存储空间,析构函数是释放m_p。
我想问的是:在一个函数中创建一个矩阵对象,此时调用构造函数,当函数结束后调用析构函数销毁该对象。如果函数的返回值类型为矩阵类,因为m_p在函数结束后释放,是不是就不能返回该局部矩阵对象了啊?????
[解决办法]
int get(void)
{
int a;
return a;
}
lz仔细想想这个代码能够运行.
在函数结束后a照样生命期结束了.
[解决办法]
我明白你的意思了。如果你的函数是Matrix Func();
如果你这样调用函数了。Matrix a=Func();那么显然会调用Matrix的拷贝构造函数。当然你也可以在该函数内部定义Matrix的对象,并且使该对象存放在堆空间上。
[解决办法]
m funk(){ m *temp = new m; return *temp;}
[解决办法]
1 函数应当返回这个矩阵类的实例
2 正确编写这个矩阵类的拷贝构造/赋值以及移动构造/赋值