C++的黑科技

周二面了腾讯,之前只投了TST内推,貌似就是TST面试了

其中有一个问题,“如何产生一个不能被继承的类”,这道题我反反复复只想到,将父类的构造函数私有,让子类不能调用,最后归结出一个单例模式,但面试官说,单例模式作为此题的解答不够灵活,后来面试官提示说,可以用友元+虚继承,可以完美实现这样一个类

当然那时我还不太明白,友元与虚继承我都极少接触过,只是知道有这些东西,回头搜了一下“不能被继承的类”的做法,具体如下:

Read More

C++的虚析构函数

C++是门神奇的语言,总是有一些不能以我们“程序员”编写它的角度去理解的问题,究其根本,大多都是C++编译器在“适当”的时候,会自动为我们的程序增加或删除一些东西,如果其编译器所做的改动,与我们预期的结果并不相关,自然我们也能得到较好理解的运行结果,然而,深入学习C++之后,就会发现,其中很多特性,必须要掌握,必须要知道编译器做了哪些东西,才能保证程序的正确执行。

C++类的构造,析构函数是C++编译器在编译的过程中,所作“适当”修改的主要场所

Read More