7_1_类模板的静态成员.cpp
#include <iostream>
using namespace std;
// 模板类中的静态成员声明与定义
template<class T>
class C371
{
public:
static int m_snum;
static int func();
};
template<class T> int C371<T>::m_snum = 0; // get
template<class T> int C371<T>::func() // get
{
return 1;
}
int main_3_7_1()
{
C371<int>::m_snum = 44; // C371<int> 与 C371<string> 是两个不同类类型,所以静态成员都各有一份。
C371<string>::m_snum = 77;
cout << C371<int>::m_snum << ", " << C371<string>::m_snum << ", " << C371<string>::func() << endl; // 44, 77, 1
return 0;
}
7_2_不能被继承类.cpp
#include <iostream>
using namespace std;
// 友元类 + 虚继承 实现:虚继承表示虚基类的构造需要在孙类的初始化列表中,但是虚基类的构造函数又是private的
class A371
{
private:
A371() {}
friend class B371;
};
class B371 : virtual public A371 // B371 无法被继承了
{
public:
};
int main()
{
A371 *pa = new B371();
return 0;
}