#include<iostream>
using namespace std;class cube
{
public:
//獲取長寬高
int* getLWH(int l, int w, int h)
{
m_H = h;
m_L = l;
m_W = w;
int r[] = { m_L,m_W ,m_H };
return r;
}
//判斷兩個立方體是否相等
int calculateS()
{
int S = (m_L*m_H + m_L*m_W + m_H*m_W) * 2;
return S;
}
int calculateV() {
int V = m_L*m_W*m_H;return V;
}
private:
int m_L;
int m_W;
int m_H;
};
int main()
{
cube c1;
int *p1=c1.getLWH(10, 20, 30);
cout << p1[0] << endl; //輸出的是想要結果10
cout << "面積1:" << c1.calculateS()<< "\t" << "體積1:" << c1.calculateV()<< endl;
cube c2;
int *p2=c2.getLWH(20, 30, 5);
cout << "面積2:" << c2.calculateS() << "\t" << "體積2:" << c2.calculateV() << endl;
cout << p1[0] << "\t" << c1.getLWH(10, 20, 30)[1] <<"\t" << c1.getLWH(10, 20, 30)[2] << endl;
//這里的p1[0],就不是10,why?????
cout << c2.getLWH(20, 30, 5)[0] << "\t " << c2.getLWH(20, 30, 5)[1] << "\t" << c2.getLWH(20, 30, 5)[2] << endl;
bool ret=isSame(p1, p2);
cout << ret << endl;
system("pause");
return(0);
}
想請教下在第一個p1[0]=10,而第二個p1[0]就不是10,這是為什么呢?感謝感謝
uj5u.com熱心網友回復:
int r[] = { m_L,m_W ,m_H };return r;
回傳的是區域變數指標(陣列名)。
區域變數出了函式作用域就無效了。
如果想能夠回傳要把r作為成員變數。
uj5u.com熱心網友回復:
我剛按著你的思路試了,(可能撰寫的方式不對,還是沒有得到想要的結果)class cube
{
public:
int * getLWH(int l, int w, int h)
{
m_H = h;
m_L = l;
m_W = w;
return m_arr; //添加
}
private:
int m_L;
int m_W;
int m_H;
int m_arr[3] = { m_L,m_W,m_H }; 添加
}:
在main中:cube c1;
int *p1=c1.getLWH(10, 20, 30);
運行顯示都是相同的東西。想得到p1[0]=10;p1[1]=20;p1[2]=30;
uj5u.com熱心網友回復:
class cube
{
public:
int * getLWH(int l, int w, int h)
{
m_H = h;
m_L = l;
m_W = w;
m_arr[0]=m_L;
m_arr[1]=m_W;
m_arr[2]=m_H;
return m_arr; //添加
}
private:
int m_L;
int m_W;
int m_H;
int m_arr[3];
}:
uj5u.com熱心網友回復:
感謝感謝,看了你的代碼恍然大悟!已成功!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/32529.html
標籤:C++ 語言
下一篇:7·3計劃 不多說了 懂得都懂
