Skip to main content

类的声明和定义

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 privateprotected 。默认情况下,类的所有成员都是 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;}