首先的呢,
还得是简单地说一下类,到底是个什么东西
类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。
还有为甚么要定义类?
定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。
类和对象的区别在哪呢?
类,是比较抽象的,而对象却是具体的。所以,类不占内存,而对象占内存。
也可以说是,类是对象的具体,而对象是类的具体事例。例如,对象是香蕉,而类就是水果。
类有3种访问限定符:
1.public(共有的)
2.private(私有的)
3.protected(受保护的)
特点:
1.public成员可从类外部直接访问,private/protected从成员不能。
2.每个限定符在类体中可多次使用,它的作用域是从该限定符出现开始到下一个限定符之前或类体结束前。
3.类体中如果没有定义限制符,则默认为私有的,而struct如果没有定义限制符,则默认为共有的。
再说一下类的基本形式:
C++中使用关键字classs定义一个类,基本形式如下:
Class类名
{
Pubic:
公共成员函数
Private:
私有成员函数
私有的数据定义
};定义类括号末尾的分号不可省略。
(P.S.好吧,和上面还是有点重复。)
c++的实现:
类的实现就是定义其成员函数的过程。类的实现有两种方式:一种是在类定义的同时完成成员函数的定义,另一种是在类定义的外部定义其成员函数.成员函数可以定义在类定义内部,或者单独使用范围解析运算符::来定义.在类定义中定义的成员函数把函数声明为内联的,
当然也是可以在外部定义的。
形式:
返回类型类名::成员函数名(参数列表)
{
函数体
}
其中,返回类型、成员函数名和参数列表必须与类定义时的函数原型一致。
还有this指针来着
1.每个成员函数都有一个指针形参,它的名字是固定的,叫做this指针,this指针式隐式的(构造函数比较特殊,没有这个隐式函数形参).
2.编译器会对成员函数进行处理,在对象调用成函数时对象地址作实参传递给成员函数的第一个形参this指针.
3.this指针是成员函数隐含指针形参,是编译器自己处理的,我们不能在成员函数的形参中添加this指针的参数定义,也不能在调用时显示传递对象的地址给this指针.
类的定义:
类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。下面是类定义的一般形式:
<access specifier> class class_name
{
// member variables
<access specifier> <data type> variable1;
<access specifier> <data type> variable2;
...
<access specifier> <data type> variableN;
// member methods
<access specifier> <return type> method1(parameter_list)
{
// method body
}
<access specifier> <return type> method2(parameter_list)
{
// method body
}
...
<access specifier> <return type> methodN(parameter_list)
{
// method body
}
}
请注意:
- 访问标识符 <access specifier> 指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。类的默认访问标识符是 internal,成员的默认访问标识符是 private。
- 数据类型 <data type> 指定了变量的类型,返回类型 <return type> 指定了返回的方法返回的数据类型。
- 如果要访问类的成员,你要使用点(.)运算符。
- 点运算符链接了对象的名称和成员的名称。
this指针:
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。
友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。
C++类的静态成员
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。
我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。
静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化.
友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。
我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。
静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化.
类的 构造函数 是类的一个特殊的成员函数,当创建类的新对象时执行.
构造函数的名称与类的名称完全相同,它没有任何返回类型.
学习心得:
之前c++函数的学习就有点难过,总感觉不太好学,现在学习了类之后,更是难上加难.
总之呢,就是还得加劲儿去理解,更何况今天老师说了,计算机有一点很重要的就是 悟!
而且,前几天的ATM着实难倒了我,抑郁,感觉好难,有点懵懵的赶脚.由于我们还在初学阶段,避免不了出现喝多的问题,之前所说的滚雪球法的重要性也是水涨船高.