Luv*_*Luv 6 c++ static constructor
假设我们有一个班级
class Egg
{
static Egg e;
int i;
Egg(int ii):i(ii) {}
Egg(const Egg &); //Prevents copy-constructor to be called
public:
static Egg* instance() {return &e}
};
Egg Egg::e(47);
Run Code Online (Sandbox Code Playgroud)
此代码保证我们不能创建任何对象,但只能使用静态对象.但是我们如何在类中声明同一个类的静态对象.
还有一件事因为e是静态对象,静态对象只能调用静态成员函数,所以如何在静态对象e中调用构造函数,其构造函数也是私有的.
但是我们如何在类中声明同一个类的静态对象.
甲static成员变量没有存储类的每个对象的内部.因此,如果你声明一个static成员变量在类中或作为命名空间级别的对象所定义的后级,不同之处仅在相对于访问(Class::var和var),并获得protected和private成员.
还有一件事
e是静态对象,静态对象只能调用静态成员函数
我认为你正在混合static功能和static对象.在static函数内部,您只能调用static函数(除非您在对象上调用它们).
那么如何在这里为静态对象调用构造函数
e
与每个其他对象一样,也必须为static对象调用构造函数.
它的构造函数也是私有的
在C++的类级别上检查访问控制.因此,由于static对象在类中,因此可以访问private成员.
与其他一些语言不同,以下内容在C++中是合法的,因为对私有成员的访问来自类内部 - 即使在另一个对象上(other在本例中):
class Test {
private:
int i;
public:
Test(const Test &other)
: i(other.i)
{}
};
Run Code Online (Sandbox Code Playgroud)