我之前在一篇文章中,讲解了对象是什么,对于一些刚看我文章的朋友,我在这里再次简单的描述一下,如果想要更加深入的了解,就请就看我之前发表的文章。
我们知道,c++,是一门面向对象的编程。那么何为对象,以及我们这里所说的对象成员又是啥?
对象,通俗地来说,就是相当于c语言里面地变量。我们通常会将对象与类放在一起讲,类,就相当于c语言里面地数据类型。ok,我们引入对象成员。
对象成员:在定义一个新的类型时,可以用已有地类 类型实例化对象作为新类地数据成员使用。
这句话可能有点不好理解,我们来看代码:
#include<iostream>
using namespace std;
class A
{
public:
A()
{
cout << "创建A" << endl;
}
~A()
{
cout << "析构A" << endl;
}
};
class B
{
public:
B()
{
cout << "创建B" << endl;
}
~B()
{
cout << "析构B" << endl;
}
private:
A a;
};
int main()
{
B obj;
return 0;
}
上面代码为我们展示了对象成员地构造,它与其他类函数一样,也需要构造函数,结束调用是需要析构函数。(我也在之前文章讲过何为析构函数。)我们现在再看对像成员的定义,是不是很清楚,也就是说,我们将一个类进行实例化,并且在另一个中作为数据成员,此时的实例化类就具有了两个身份。
我们接下来来讲静态成员与静态函数:
请大家看一个代码:
#include<iostream>
#include<string>
using namespace std;
class croster
{
public:
static int count;
private:
string name;
int Math;
int English;
int Sum;
public:
croster(string na = "undef", int m = 100, int e = 100);
void display();
int cumulation();
void display()const;
};
int croster::count = 100;
croster::croster(string na, int m, int e):name(na),Math(m),English(e)
{
cout << "Welcome new class." << endl;
Sum = Math + English;
count--;
}
void croster::display()const
{
cout << name << endl;
cout << "Math:" << Math << endl;
cout << "English:" << English << endl;
cout << "Sum:" << Sum << endl;
}
int croster::cumulation()
{
Sum = Math + English;
return Sum;
}
int main()
{
cout << "Number of all student=" << croster::count << endl;
croster list[3];
cout << "Number of all student=" << list[1].count<< endl;
croster stu_A;
cout << "Number of all student=" << stu_A.count<< endl;
cout << "Number of all student=" << croster::count << endl;
return 0;
}
壹、 静态数据成员
(1)静态数据成员格式如下:
static 类型 静态数据成员名;
例:static int count;
(2)这里要注意一下,静态数据成员一定要初始化,且必须在类外实现。
格式如下:
类型 类名 ::静态数据成员名=初始值;
例如:int croster::count(100);
(3)在C++中对于赋值有几种形式,大家需要了解一下哦!
贰、静态成员函数
大家看一下上面代码的公有属性中,对静态成员数据的定义。如果这里的公有属性变成私有属性,那么以下对于count(静态数据成员)的访问,都将是被拒之门外,那么如何解决这一问题,方法是就是我们下面所讲的静态成员函数。
我们这里所讲的静态成员函数,里面没有this指针,所以只能访问静态成员。我们以上面的代码为例,我们引用代码中的display()。修改如下;
static void diaplay ()
{
cout<<count<<endl;
}
本章讲解到此为止。(如果里面讲的内容有什么错误,欢迎大家来指正!)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)