1 静态数据成员的模板定义必须出现在类模板定义之外.
#include<iostream>
using namespace std;
template<typename T>
class yang
{
public:
yang(T i){ x=i;};
~yang(void){};
void print(void){ cout<<x<<endl;}
private:
static T x;
};
template<typename T>
T yang<T>::x=0;
int main()
{
yang<int> a(5);
a.print();
system("pause");
}
2使用指向成员函数的指针
#include<iostream>
using namespace std;
class yang
{
public:
typedef void (yang::*p)();
p pf;
yang(void);
void add(void);
void print(void);
void exec(void);
private:
int val;
};
yang::yang(void)
{
val=0;
}
void yang::add(void)
{
val+=1;
}
void yang::print(void)
{
cout<<val<<endl;
}
void yang::exec(void)
{
pf=&yang::add;
(this->*pf)();
pf=&yang::print;
(this->*pf)();
}
int main(void)
{
yang a;
a.exec();
return 0;
}
3 g++ 4.0.0居然不支持export.有那个compile支持export这个关键字呀
4类中的静态变量和静态函数的使用方法.
静态变量在所由的类对象中只有唯一的一个值,静态变量在类对象中是共享的.在静态函数中不能使用非静态变量
#include<iostream>
using namespace std;
class yang
{
public:
yang(void);
void add(void){ val+=1;}
void print(void){ cout<<val<<endl;}
static void printf(void){ cout<<val<<endl;}
private:
static int val;
int n;
};
int yang::val=0; //在类体外定义
yang::yang(void)
{
n=0;
}
int main()
{
yang a;
yang b;
yang c;
yang *p;
a.print();
a.add();
c.add();
a.add();
p->add();
c.print();
yang::printf(); //静态函数的使用方法
}
#include<iostream>
using namespace std;
template<typename T>
class yang
{
public:
yang(T i){ x=i;};
~yang(void){};
void print(void){ cout<<x<<endl;}
private:
static T x;
};
template<typename T>
T yang<T>::x=0;
int main()
{
yang<int> a(5);
a.print();
system("pause");
}
2使用指向成员函数的指针
#include<iostream>
using namespace std;
class yang
{
public:
typedef void (yang::*p)();
p pf;
yang(void);
void add(void);
void print(void);
void exec(void);
private:
int val;
};
yang::yang(void)
{
val=0;
}
void yang::add(void)
{
val+=1;
}
void yang::print(void)
{
cout<<val<<endl;
}
void yang::exec(void)
{
pf=&yang::add;
(this->*pf)();
pf=&yang::print;
(this->*pf)();
}
int main(void)
{
yang a;
a.exec();
return 0;
}
3 g++ 4.0.0居然不支持export.有那个compile支持export这个关键字呀
4类中的静态变量和静态函数的使用方法.
静态变量在所由的类对象中只有唯一的一个值,静态变量在类对象中是共享的.在静态函数中不能使用非静态变量
#include<iostream>
using namespace std;
class yang
{
public:
yang(void);
void add(void){ val+=1;}
void print(void){ cout<<val<<endl;}
static void printf(void){ cout<<val<<endl;}
private:
static int val;
int n;
};
int yang::val=0; //在类体外定义
yang::yang(void)
{
n=0;
}
int main()
{
yang a;
yang b;
yang c;
yang *p;
a.print();
a.add();
c.add();
a.add();
p->add();
c.print();
yang::printf(); //静态函数的使用方法
}