各个描述下边就是代码,想试试的大哥可以试试
普通方法可以调常方法,反过来不行;因为对this指针的限定不同
普通方法可以调动静态方法,反过来不行;静态成员没有this指针
静态方法可以用 类:: 调动
//静态对象
class Test
{
public:
Test() :m_data(0)
{}
public:
void fun()
{
m_data = 1;
m_value = 10;
print();
show();
}
static void show()
{
//m_data = 10;
m_value = 100;
//fun()
}
//const Test * const this
void print()const
{
cout << "This print()" << endl;
}
private:
int m_data;
static int m_value;//不属于某一个类,所有对象共享
};
int Test::m_value = 0;
void main()
{
Test t1;
Test t2;
}
查看有多少个对象构造 用静态变量,这样公用,就不会各自自己用
如果对象包含对象,则出了作用域 析构得–;
//统计个数
class Test
{
public:
Test()
{
m_count++;
}
~Test()//因为T1中成员析构得取消
{
m_count--;
}
public:
static int GetCount()
{
return m_count;
}
private:
int m_data;
static int m_count;
};
int Test::m_count = 0;
void main()
{
Test t1;
{
Test t4;
Test t5;
}
Test t2;
Test t3;
cout << "count = " << Test:: GetCount() << endl;
}
有缘函数也没有this 他也不是成员函数(全局函数 友元函数 静态成员 都没有this);;
友元函数可以分别是两个类的
一个类可以成为另一个类的友元类 当成为友元类,则类中所有函数变成哪个类的友元函数.
class Test
{
friend class Stu; // 友元类
public:
Test()
{
}
public:
void show()const
{
cout << "This is Test::show()" << endl;
}
private:
int m_a = 0;
int m_b = 0;
};
class Stu
{
public:
void fun(const Test &t)
{
t.show();
}
public:
int m_x = 0;
int m_y = 0;
};
void main()
{
Test t;
Stu s;
s.fun(t);