C++ 类方法解析:内外定义、参数、访问控制与静态方法详解

C++ 类方法

类方法,也称为成员函数,是属于类的函数。它们用于操作或查询类数据,并封装在类定义中。类方法可以分为两种类型:

  • 类内定义方法: 直接在类定义内部声明和定义方法。
  • 类外定义方法: 在类定义内部声明方法,并在类外部单独定义方法。

类内定义方法

在类定义内部可以直接声明和定义方法,这是一种简洁的方式。

示例:

1class Person { 2public: 3 void introduce() { 4 cout << "Hello, my name is " << name << endl; 5 } 6 7 string name; // 属性 8}; 9 10int main() { 11 Person p1; 12 p1.name = "Alice"; 13 p1.introduce(); // 调用类内定义的方法 14 15 return 0; 16}

在这个例子中,Person 类包含了一个名为 introduce() 的方法,用于打印对象的姓名。

类外定义方法

为了提高代码的可读性和维护性,有时会将方法定义移至类外部。这种情况下,需要在类内部先声明方法,然后再在类外部单独定义方法。

示例:

1class Person { 2public: 3 void introduce(); // 方法声明 4 5 string name; // 属性 6}; 7 8// 在类外部定义方法 9void Person::introduce() { 10 cout << "Hello, my name is " << name << endl; 11} 12 13int main() { 14 Person p1; 15 p1.name = "Bob"; 16 p1.introduce(); // 调用类外定义的方法 17 18 return 0; 19}

方法参数

类方法可以包含参数,用于传递数据并影响方法的行为。

示例:

1class Calculator { 2public: 3 int add(int a, int b); // 声明带两个参数的方法 4 5 int subtract(int a, int b); // 声明带两个参数的方法 6}; 7 8// 在类外部定义方法 9int Calculator::add(int a, int b) { 10 return a + b; 11} 12 13int Calculator::subtract(int a, int b) { 14 return a - b; 15} 16 17int main() { 18 Calculator calc; 19 int sum = calc.add(5, 3); // 调用带参数的方法 20 int difference = calc.subtract(10, 7); 21 22 cout << "Sum: " << sum << endl; 23 cout << "Difference: " << difference << endl; 24 25 return 0; 26}

在这个例子中,Calculator 类包含了两个方法:add()subtract(),用于计算两个数字的和和差。这两个方法都包含两个参数,分别表示要计算的数字。

访问控制

类方法的访问权限可以通过访问控制修饰符来控制,例如 publicprivateprotected

  • public:方法可以在类外部的任何地方调用。
  • private:方法只能在类的内部调用。
  • protected:方法可以在类的内部或其子类中调用。

静态方法

静态方法与类本身相关,而不是与特定对象的实例相关。静态方法不需要创建对象就可以调用,通常用于定义与类相关的实用程序函数。

要声明静态方法,请在方法声明前使用 static 关键字。

示例:

1class MathUtils { 2public: 3 static int square(int x); // 声明静态方法 4 5 static int cube(int x); // 声明静态方法 6}; 7 8// 在类外部定义静态方法 9int MathUtils::square(int x) { 10 return x * x; 11} 12 13int MathUtils::cube(int x) { 14 return x * x * x; 15} 16 17int main() { 18 int result1 = MathUtils::square(5); // 调用静态方法 19 int result2 = MathUtils::cube(3); 20 21 cout << "Square: " << result1 << endl; 22 cout << "Cube: " << result2 << endl; 23 24 return 0; 25}

在这个例子中,MathUtils 类包含了两个静态方法:square()cube(),用于计算数字的平方和立方。这些方法不需要创建对象就可以调用,直接使用类名即可。

总结

类方法是 C++ 面向对象编程的重要组成部分,用于封装类行为并提供对类数据的操作。通过理解类内和类外定义方法、方法参数、访问控制和静态方法等概念,您可以有效地利用类方法来构建

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

点赞
收藏

评论区

加载中...

相关推荐

java类与对象

java类的定义:classPerson{//成员变量的定义privateintid;privateintage;//方法定义publicintgetAge(){returnage;}publicvoidsetAge(inti){age1}}1、类的定义主要有两方面组成:一是成员变量二是方法

Dart中的抽象类、多态、以及接口

一、Dart中的抽象类Dart中抽象类: Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。  1、抽象类通过abstract 关键字来定义  2、Dart中的抽象方法不能用abstract声明

Python中的@函数装饰器到底是什么?

在解释@函数装饰器之前,先说一下,类中的类方法和静态方法。在Python中完全支持定义类方法、静态方法。这两种方法很相似,Python它们都使用类来调用(ps:用对象调用也可以)。区别在于:Python会自动绑定类方法的第一个参数,类方法的第一个参数会自动绑定到类本身;但对于静态方法则不会自动绑定。类方法用@classmethod

Swift讲解专题十二——方法

Swift讲解专题十二——方法一、引言      方法只是一个术语,其实就是将函数与特定的类型结合,类、结构体、枚举都可以定义方法,方法又分为实例方法和类型方法,类型方法类似于ObjectiveC中的类方法。Swift和ObjectiveC的一大不同是,ObjectiveC只有在类中可以定义方法。

PHP中static和self的区别

使用self::或者\_\_CLASS\_\_对当前类的静态引用,取决于定义当前方法所在的类:使用static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。静态绑定是PHP5.3.0,增加的一个功能用于在继承范围内引用静态调用的类简单通俗的来说,

IntentService类 和 异步任务(AsyncTask)

IntentService是一个Service类。IntentService只有1个带String参数的构造方法,所以,在自定义类继承IntentService时,需要在自定义类中显式的调用IntentService带参数的构造方法,并且将自定义类的构造方法修改为无参数的。IntentService内部使用消息机制,利用消息队列的特性,可以依次处