#include<iostream>
using namespace std;
class Fred {
public:
// The create() methods are the "named constructors":
static Fred* create() { return new Fred(); }
static Fred* create(int i) { return new Fred(i); }//if not static ,the g++ will say :"
//cannot call member function `Fred* Fred::create(int)' without object"
static Fred* create(const Fred& fred) { return new Fred(fred); }
private:
// The constructors themselves are private or protected:
Fred();
Fred(int i);
Fred(const Fred& fred);
};
Fred::Fred()
{
cout<<"Fred()is called"<<endl;
}
Fred::Fred(int i)
{
cout<<"Fred(int i) is called and i is "<<i<<endl;
}
Fred::Fred(const Fred &fred)
{
cout<<"Fred(const Fred &fred) is called"<<endl;
}
int main()
{
Fred* p = Fred::create(5);
cout<<"hello,world"<<sizeof(Fred)<<endl;
delete p;
}
/*******************************************************************************************************
the static function can called without object ,or the class 's non-static method don't need this pointer,we can call
static method use class::method or object->method .the program above ,the constructor is private ,we can't create
object directly ,but we can call the class 's static method to create object indirectly.
the static method can only access the class's static members because of other memthers need this pointer except static method.
*********************************************************************************************************/
const 成员函数不能修改成员变量,因为,传入的是const classname * const this 指针。