类的声明和定义
在 C++
中, 声明一个类使用关键字 class
。类里面你可以进一步去定义类的一些成员变量和成员函数。
class A
{
int a; // 成员变量
void add(int a, int b) // 成员函数
{
return a + b;
}
};
类成员
类成员简介
类成员分为两种,一种是成员变量,一种是成员函数。成员变量就是类里面的变量,成员函数就是类里面的函数。
类成员不能是自身类型的数据成员,比如 class B{B mb;};
。不能从类外直接访问类成员,而是必须通过对象进行访问,这是因为定义类时候,形成了一个类作用域,在类中定义的成员具有类作用域,在类外是不知道类中的成员的,所以类成员不能从外部直接进行访问。
数据成员的初始化
在定义类的时候,数据成员是不能进行初始化的,数据成员的声明和普通变量相同。在定义类的时候系统并没有给类分配储存空间,所以系统也就无法存储这些数据成员的值,比如 class A{int a = 1};
就是错误的,因为数据成员 a 在定义类的时候不能进行初始化。 对象的初始化一般使用构造函数进行初始化,这个我们会在后面进行介绍。
访问控制符
类的访问控制符有3个,分别是 public
、private
、protected
。默认情况下,类的所有成员都是 private
的,所以在类的外部是不能访问类的成员的。如果想要在类的外部访问类的成员,就需要使用访问控制符。
1、public
:在类的外部是可以访问类的成员的比如
class A
{
public :
int a;
void f(){}
};
A ma;
ma.a = 1; // 正确
cout << ma.a; // 正确
2、private
:在类的外部是不能访问类的成员的, 该成员只能被成员函数和类的友元访问。比如
class A
{
private :
int a;
void f(){a=1;}
};
A ma;
ma.f(); // 错误
ma.a = 1; // 错误
3、protected
:暂时理解可理解为 private
后面会有详细介绍。
成员函数
在类中声明的函数被称为成员函数,比如 class A{public : void f();}
, f 就是 A 的一个成员函数。
成员函数只在其声明的类中可见,在类外是不可见的。成员函数可以直接访问类中的成员,不需要点或箭头运算法。成员函数可以访问类中公有的、保护的和私有的成员而且不会破坏这些成员的访问权限。
成员函数的定义
成员函数既可以在类中定义,也可以在类外进行定义。在类外定义成员函数需要使用作用域解析运算法 ::
来表示所定义的函数的某个类的成员。
在类外定义成员函数的时候,被定义的成员函数必须现在类体内被声明,也就是说,带有成员函数声明的类体必须出现在成员函数的定义之前。
#include <iostream>
using namespace std;
class A1
{
int a2;
public :
int a3;
void f() {a2 = 1;}
void f1();
};
void A1::f1() {a3 = 1;}