一、类的基本特征
抽象、封装、继承、多态。
二、类的成员
数据、函数、类型别名
类型别名例子:
class Test
{
public:
typedef int Integer;
A(Integer x)
{
a = x;
}
void Show()
{
printf("%d\n", a);
}
private:
Integer a;
};
三、类访问标号
public、private、protected
四、static类成员
类的static成员分为static数据成员与static成员函数,类的静态成员为所有对象共享。
类的static成员在访问前需要初始化,格式为:
<数据类型>类名::静态成员名=初始值;
访问静态成员变量为:<类名>::成员名
类的静态成员没有this指针,因此静态成员函数不能访问非静态成员变量。
修饰符限制了成员的存储域和可见性。
static成员变量存储在静态存储区,静态存储区中存储全局变量和静态变量;可见性主要体现在全局变量和函数,当有多个文件时,全局变量和函数可以在多个文件中使用,但是如果限制为static,则限制为只能在定义的文件中使用。
局部的static变量跟普通的变量的区别在于,变量值得持久性。
五、const成员
const成员变量必须通过构造函数的初始化列表初始化,格式为:
类名(参数列表):A(实参)...{ }
类也可以有const成员函数,const成员函数只能访问类的成员变量,而不能修改类的成员变量。
六、构造函数
构造函数分为:普通的构造函数、复制(拷贝)构造函数
普通构造函数可以被重载,从而为初始化对象提供了不同的方式。
在定义类的时候会默认生成一个构造函数,如果用户不重新定义,则定义对象时会使用默认的构造函数。构造函数可以分为带有参数或不带参数,或带有默认值的构造函数。
复制(拷贝)构造函数:是一种特殊的构造函数,它的参数是类的对象的const引用。其目的是用一个对象去初始化另一个对象。格式为:
类名(const 类名 &对象)
七、友元函数或友元类
由于只有类的公有接口才是与外界的接口,但是有时为了再函数中直接访问类的私有变量,可以通过将函数设为友元函数来实现。
友元函数例子:
- #include <iostream>
- #include <string.h>
- using namespace std;
- class Point;
- void Show(const Point &p);
- class Point
- {
- public:
- Point(int a, int b)
- {
- x = a;
- y = b;
- }
- friend void Show(const Point &p);
- private:
- int x;
- int y;
- };
- void Show(const Point &p)
- {
- cout<<p.x<<" "<<p.y<<endl;
- }
- int main()
- {
- Point p(100, 100);
- Show(p);
- return 0;
- }
友元类,则该类中的所有函数都是友元函数,都可以访问类中的私有变量。
- #include <iostream>
- using namespace std;
- class AAA;
- class Point
- {
- public:
- Point(int a, int b)
- {
- x = a;
- y = b;
- }
- friend class AAA;
- private:
- int x;
- int y;
- };
- class AAA
- {
- public:
- void Show(const Point &p)
- {
- cout<<p.x<<" "<<p.y<<endl;
- }
- void Move(Point &p, int x, int y)
- {
- p.x += x;
- p.y += y;
- }
- };
- int main()
- {
- Point p(100, 100);
- AAA aa;
- aa.Show(p);
- aa.Move(p, 10, 10);
- aa.Show(p);
- return 0;
- }
阅读(619) | 评论(0) | 转发(0) |