首先我们要知道,在c++中,子类的构造函数会调用基类的构造进行合成,要想一个类不被继承,只要把它的构造函数定义成私有,子类就没有办法访问基类构造函数,从而就阻止了进行子类构造对象
可是问题又来了,你把一个类的构造函数定义为私有的,那它自己也定义不出对象,这该如何解决。这时我们想到了静态函数,静态成员函数没有this指针,可以通过类直接访问。
#include<iostream>
using namespace std;
class AA
{
public:static AA Getobj(int a)
{
return AA( a);//调用构造函数不需要this指针
}
private:
AA(int a=10)
:_a(a)
{
}
protected:
int _a;
};
class BB :public AA
{
//public:BB(int a = 10, int b = 2)
// :AA(a)
// , _b(b)
// {
//
// }
protected:
int _b;
};
int main()
{
AA * ptr = &(AA::Getobj(10));
return 0;
}