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关键字进行标记。