我想使用以下静态函数。该函数将依次计算输入,std :: cout结果。调用静态函数并从堆栈中取出后,是否会释放与此类关联的所有内存?这相当于在main的范围内创建此类的实例,还是仅在此函数调用期间存在?假设函数在main函数中被调用,如下所示。此外,进一步阅读链接将是伟大的。
typedef std::vector< std::vector<int> > matrix;
class LCS
{
public:
static void getLCS(std::string,std::string);
private:
void compute_alignment();
std::vector<std::string> f1,f2;
matrix cost,link;
};
int main(int argc, char* argv[])
{
//check command line args
if(argc != 3){std::cout<<"usage: ./exe file1.txt file2.txt";exit(1);}
//compute
LCS::getLCS(argv[1],argv[2]);
}
答案 0 :(得分:1)
严格根据您的问题判断,如果在堆栈中声明它们(不是任何类型的裸new
),则在完成该函数后,在getLCS内声明的所有变量将会死亡 。除此之外别无其他。调用静态函数也不会创建新的LCS
类:类上的静态函数几乎就像自由函数一样,除了它们可以在它们上面放置访问修饰符以便在类中进行作用域。 Static data and methods operate independently of their classes unless you explicitly use and intermingle them in member functions
编辑:
请注意,所有C ++函数都是如此。当该函数/作用域死亡时,在堆栈上生成的对象和基元将死亡/超出范围。作为奖励乐趣,您甚至可以通过在某些代码周围任意使用一些大括号scope
来创建{ /* ... */ }
!但通常没有必要做那样的事情。