撰寫一個程式,定義一個類Point, 含橫坐標和縱坐標兩個整型資料成員,設計一個交換橫、縱坐標的函式swap,要求使用物件的參考作為該函式的形參,和一個顯示坐標點資料的成員函式print。創建物件p1, 呼叫成員函式實作交換橫縱坐標,要求輸出交換前、后p1的橫、縱坐標值。(考查物件作為函式的引數)
uj5u.com熱心網友回復:
//撰寫一個程式,定義一個類Point, 含橫坐標和縱坐標兩個整型資料成員,
//設計一個交換橫、縱坐標的函式swap,要求使用物件的參考作為該函式的形參,
//和一個顯示坐標點資料的成員函式print。創建物件p1, 呼叫成員函式實作交換橫縱坐標,
//要求輸出交換前、后p1的橫、縱坐標值。(考查物件作為函式的引數)
#include <iostream>
using namespace std;
class Point {//定義一個類Point
public:
Point() {
this->x=0;
this->y=0;
}
Point(int x,int y) {
this->x=x;
this->y=y;
}
static void swap(Point &p) {//交換橫、縱坐標,使用物件的參考作為該函式的形參
int tmp;
tmp=p.x;
p.x=p.y;
p.y=tmp;
}
void print() {//顯示坐標點資料
cout << "(" << this->x << "," << this->y << ")" << endl;
}
private:
int x;//橫坐標
int y;//縱坐標
};
int main() {
Point p1=Point(1,2);//創建物件p1
p1.print();//輸出交換前p1的橫、縱坐標值。
Point::swap(p1);//呼叫成員函式實作交換橫縱坐標
p1.print();//輸出交換后p1的橫、縱坐標值。
return 0;
}
//(1,2)
//(2,1)
//
uj5u.com熱心網友回復:
為什么swap函式前要加個static
uj5u.com熱心網友回復:
還有為什么要定義兩個point函式,第一個建構式可不可以省略?
uj5u.com熱心網友回復:
//撰寫一個程式,定義一個類Point, 含橫坐標和縱坐標兩個整型資料成員,
//設計一個交換橫、縱坐標的函式swap,要求使用物件的參考作為該函式的形參,
//和一個顯示坐標點資料的成員函式print。創建物件p1, 呼叫成員函式實作交換橫縱坐標,
//要求輸出交換前、后p1的橫、縱坐標值。(考查物件作為函式的引數)
#include <iostream>
using namespace std;
class Point {//定義一個類Point
public:
// Point() {
// this->x=0;
// this->y=0;
// }
Point(int x,int y) {
this->x=x;
this->y=y;
}
/*static*/ void swap(Point &p) {//交換橫、縱坐標,使用物件的參考作為該函式的形參
int tmp;
tmp=p.x;
p.x=p.y;
p.y=tmp;
}
void print() {//顯示坐標點資料
cout << "(" << this->x << "," << this->y << ")" << endl;
}
private:
int x;//橫坐標
int y;//縱坐標
};
int main() {
Point p2;//★編譯錯誤error C2512: “Point”: 沒有合適的默認建構式可用
Point p1=Point(1,2);//創建物件p1
p1.print();//輸出交換前p1的橫、縱坐標值。
Point::swap(p1);//呼叫成員函式實作交換橫縱坐標 ★編譯錯誤error C2352: “Point::swap”: 非靜態成員函式的非法呼叫
p1.print();//輸出交換后p1的橫、縱坐標值。
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/280011.html
標籤:C++ 語言
