27类的成员函数

简介: 27类的成员函数

C++入门——60s从0到1

类的成员函数

 

类的成员函数是类中定义的函数,用于实现对象的行为。成员函数可以访问类的私有成员和公有成员,并且可以通过对象来操作对象的数据成员。在C++中,成员函数的声明、定义和使用都需要遵循一定的语法规则。

 

成员函数的声明

 

在C++中,成员函数的声明使用类名和作用域解析运算符::后跟函数名和一对圆括号(),圆括号中可以传递参数列表。如果成员函数是虚函数,则需要在函数名前加上关键字virtual。例如:

 

class MyClass {
public:
    void print(int x); // 成员函数的声明
private:
    int m_x; // 数据成员
};

 

在上面的代码中,print()是一个公有成员函数,它接受一个整型参数x。如果在类的声明中没有指定函数的返回类型,则默认为void类型。如果在函数名前加上了virtual关键字,则该函数是一个虚函数,可以在派生类中被重写(override)。

 

成员函数的定义

 

在C++中,成员函数的定义是在类体中进行的。成员函数的定义需要与声明相匹配,即需要具有相同的函数名、参数列表和访问控制符。成员函数的定义可以使用作用域解析运算符::来限定类名,也可以省略类名,直接使用作用域解析运算符::后跟作用域限定符(如this->或->)来限定当前对象的类型。例如:

 

class MyClass {
public:
    void print(int x) { // 成员函数的定义
        cout << "x = " << x << endl;
    }
private:
    int m_x; // 数据成员
};

 

 

在上面的代码中,print()是一个公有成员函数,它的定义在类体中进行。在函数体内部,我们使用了cout语句来输出参数x的值。

 

调用成员函数

 

在C++中,可以通过对象来调用成员函数。调用方式为:对象名.成员函数名(参数列表)。例如:

 

MyClass obj; // 创建对象

obj.print(10); // 调用成员函数

 

在上面的代码中,我们首先创建了一个MyClass类型的对象obj,然后通过obj调用了print()函数,并传递了参数10。在调用时,编译器会自动将对象作为第一个隐含参数传递给成员函数,这个隐含参数被称为this指针。

 

虚函数和纯虚函数

 

虚函数是一种特殊的成员函数,可以在派生类中被重写(override),从而实现多态性。如果一个基类的成员函数被声明为虚函数,则在派生类中对该函数进行重写时需要使用关键字override。纯虚函数是一种特殊的虚函数,它的声明在基类中没有具体的实现,而是由派生类来实现具体的实现。纯虚函数的声明需要在函数名后面加上=0,例如:

 

class MyBaseClass {
public:
    virtual void print() = 0; // 纯虚函数的声明
};
 
class MyDerivedClass : public MyBaseClass {
public:
    void print() override { // 重写基类的虚函数
        cout << "Hello, World!" << endl;
    }
};

在上面的代码中,MyBaseClass是一个基类,它包含了一个纯虚函数print()。MyDerivedClass是一个派生类,它继承自MyBaseClass并重写了print()函数。由于print()是一个纯虚函数,因此在MyBaseClass中没有具体的实现。在MyDerivedClass中对print()的重写使用了override关键字进行标记。

目录
相关文章
|
6月前
|
存储 编译器 程序员
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
|
8月前
|
编译器 程序员
成员函数
成员函数
|
4天前
|
C++ Linux
|
4天前
|
C++
C++ 类中静态成员和静态成员函数的继承覆盖
C++ 类中静态成员和静态成员函数的继承覆盖
26 0
|
9月前
|
安全 编译器 C++
[C++] 类与对象(中)类中六个默认成员函数(1)上
[C++] 类与对象(中)类中六个默认成员函数(1)上
|
9月前
|
存储 编译器 C++
[C++] 类与对象(中)类中六个默认成员函数(1)下
[C++] 类与对象(中)类中六个默认成员函数(1)下
|
10月前
|
编译器 C++
<c++> 类的构造函数与类的析构函数
<c++> 类的构造函数与类的析构函数
74 0
|
11月前
|
编译器 C语言 C++
C++ 继承,构造函数,析构函数(上)
C++ 继承,构造函数,析构函数
|
12月前
8-成员函数做友元
8-成员函数做友元
【C++之成员函数】类外定义成员函数
【C++之成员函数】类外定义成员函数