如果想要交一个在学术上交流的朋友的话,我很愿意成为大家的学术论友;私人QQ:1959919961(非诚勿扰,备注表明来意)
我之前在一篇文章中,讲解了对象是什么,对于一些刚看我文章的朋友,我在这里再次简单的描述一下,如果想要更加深入的了解,就请就看我之前发表的文章。
我们知道,c++,是一门面向对象的编程。
那么何为对象,以及我们这里所说的对象成员又是啥?
对象,通俗地来说,就是相当于c语言里面地变量。
我们通常会将对象与类放在一起讲,类,就相当于c语言里面地数据类型。
ok,我们引入对象成员。
对象成员:在定义一个新的类型时,可以用已有地类 类型实例化对象作为新类地数据成员使用。
这句话可能有点不好理解,我们来看代码:
#include
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
#include
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< } 本章讲解到此为止,我会之后推出(2)。 (如果里面讲的内容有什么错误,欢迎大家来指正!) 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)