《关于为什么可以在构造类之前就访问类成员这件事》
  • 板块灌水区
  • 楼主LYH_cpp
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/8/21 20:13
  • 上次更新2023/11/3 02:09:12
查看原帖
《关于为什么可以在构造类之前就访问类成员这件事》
686891
LYH_cpp楼主2023/8/21 20:13
#include <cstdio>
#include <iostream>
using ll=long long;
constexpr int N=4e5+5;
template<typename T,int max_size,int page_size>
class MemoryPool{
	T pool[max_size*page_size],*stk[max_size],**top;
public:
	MemoryPool():top(stk+max_size){
		std::cerr<<"Start: "<<top<<std::endl;
		int i=0;
		for(T*&x:stk)x=pool+page_size*(i++);
	}
	T*alloc(){
		std::cerr<<"Alloc: "<<top<<std::endl;
		return *--top;
	}
	void free(T*p){*top++=p;}
};
template<int n,int base>
class lll{
	static MemoryPool<int,10,n>mp;
	int *a,len;
public:
	lll():a(mp.alloc()),len(0){}
	~lll(){mp.free(a);}
};
template<int n,int base>
MemoryPool<int,10,n>lll<n,base>::mp;
lll<N,10>a;
int main(){
	return 0;
}

rt,本来想写个高精的,结果a的构造函数比mp的构造函数先调用,导致top还没被初始化就被alloc()调用了

2023/8/21 20:13
加载中...