3
我想不懂的例子中的Named Constructor Idiom
我有爲什麼我必須把這個功能靜態
Point.h
class Point
{
public:
static Point rectangular(float x, float y);
private:
Point(float x, float y);
float x_, y_;
};
inline Point::Point(float x, float y) : x_(x), y_(y) {}
inline Point Point::rectangular(float x, float y) {return Point(x,y);}
的main.cpp
#include <iostream>
#include "include\Point.h"
using namespace std;
int main()
{
Point p1 = Point::rectangular(2,3.1);
return 0;
}
它確實不編譯如果Point::rectangular
不是static
,我不明白爲什麼...
你知道靜態關鍵字在這種情況下做了什麼嗎? – 2013-02-25 21:50:52
不,我恐怕...對我來說,靜態意味着函數不是在對象上調用,而是屬於整個類 – statquant 2013-02-25 21:51:43
對。現在想想如果它不是靜態的,你會如何使用它來創建一個新對象?你需要有一個對象,所以你可以調用成員函數,但是如果你已經有一個對象,你不需要構造另一個對象。 – 2013-02-25 21:57:07