C++ 类方法

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

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

类内定义方法

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

示例:

class Person {
public:
void introduce() {
cout << "Hello, my name is " << name << endl;
} string name; // 属性
}; int main() {
Person p1;
p1.name = "Alice";
p1.introduce(); // 调用类内定义的方法 return 0;
}

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

类外定义方法

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

示例:

class Person {
public:
void introduce(); // 方法声明 string name; // 属性
}; // 在类外部定义方法
void Person::introduce() {
cout << "Hello, my name is " << name << endl;
} int main() {
Person p1;
p1.name = "Bob";
p1.introduce(); // 调用类外定义的方法 return 0;
}

方法参数

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

示例:

class Calculator {
public:
int add(int a, int b); // 声明带两个参数的方法 int subtract(int a, int b); // 声明带两个参数的方法
}; // 在类外部定义方法
int Calculator::add(int a, int b) {
return a + b;
} int Calculator::subtract(int a, int b) {
return a - b;
} int main() {
Calculator calc;
int sum = calc.add(5, 3); // 调用带参数的方法
int difference = calc.subtract(10, 7); cout << "Sum: " << sum << endl;
cout << "Difference: " << difference << endl; return 0;
}

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

访问控制

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

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

静态方法

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

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

示例:

class MathUtils {
public:
static int square(int x); // 声明静态方法 static int cube(int x); // 声明静态方法
}; // 在类外部定义静态方法
int MathUtils::square(int x) {
return x * x;
} int MathUtils::cube(int x) {
return x * x * x;
} int main() {
int result1 = MathUtils::square(5); // 调用静态方法
int result2 = MathUtils::cube(3); cout << "Square: " << result1 << endl;
cout << "Cube: " << result2 << endl; return 0;
}

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

总结

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

最后

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

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

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

C++ 类方法解析:内外定义、参数、访问控制与静态方法详解的更多相关文章

  1. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

  2. Java构造和解析Json数据的两种方法详解二——org.json

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...

  3. Java构造和解析Json数据的两种方法详解一——json-lib

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...

  4. (转)Linux内核参数设置sysctl命令详解

    Linux内核参数设置sysctl命令详解 原文:https://www.zhukun.net/archives/8064 sysctl是一个允许您改变正在运行中的Linux系统的接口. 它包含一些 ...

  5. springboot项目--传入参数校验-----SpringBoot开发详解(五)--Controller接收参数以及参数校验----https://blog.csdn.net/qq_31001665/article/details/71075743

    https://blog.csdn.net/qq_31001665/article/details/71075743 springboot项目--传入参数校验-----SpringBoot开发详解(五 ...

  6. laravel 配置路由 api和web定义的路由的区别详解

    1.路由经过中间件方面不同 打开kerenl.php就可以看到区别 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware ...

  7. 《Java面试全解析》1000道面试题大全详解(转)

    <Java面试全解析>1000道 面试题大全详解 本人是 2009 年参加编程工作的,一路上在技术公司摸爬滚打,前几年一直在上海,待过的公司有 360 和游久游戏,因为自己家庭的原因,放弃 ...

  8. [Go] 命令行参数解析包(flag 包)使用详解

    Go 的 flag 包可以解析命令行的参数. 一.命令行语法 命令行语法主要有以下几种形式: cmd -flag       // 只支持bool类型 cmd -flag=xxx cmd -flag ...

  9. php-fpm 启动参数及重要配置详解

    约定几个目录 /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php.ini 一,php- ...

  10. php-fpm 启动参数及重要配置详解<转>

    原文地址  http://levi.cg.am/archives/3127 约定几个目录 /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm. ...

随机推荐

  1. [学习笔记]Rocket.Chat业务数据备份

    Rocket.Chat 的业务数据主要存储于mongodb数据库的rocketchat库中,聊天中通过发送文件功能产生的文件储存于/app/uploads中(文件方式设置为"FileSyst ...

  2. Module not specified-使用IDEA出现问题

    一.问题由来 使用IDE导入一个项目时,准备启动这个项目,然后突然报错,错误信息如标题中所示Module not specified.这个项目之前都还好好的 怎么突然就运行不了了呢?让我感到很是疑惑, ...

  3. k8s通过help、dry-run、explain提高编写yaml效率

    在Kubernetes(k8s)环境中,help.dry-run和explain命令可以帮助你提高编写YAML文件的效率.这些命令提供了关于资源定义.命令用法和字段说明的信息,从而让你能够更快速.更准 ...

  4. 基于DSP的设备振动信号的采集和处理模块研发总结

    前记  在能源领域,由于很多地方都是无人值守,设备故障检测是一个必须面对的问题.笔者通过最近几个行业案例了解到,由于很多设备发生故障时候会产生特定频谱的声音,所以该行业对振动监测的需求特别强烈,由于涉 ...

  5. 基于ads1299的可穿戴脑电信号采集之性能调试总结

    一 前言 问题背景: 最近做项目,遇到了一个问题,就是采集的信号有噪声,在这里做了很多尝试.   二 测试步骤 A 内部方波信号质量,通过测试发现内部方波信号质量特别好.这个说明了软件和存储这块,没啥 ...

  6. C#事件(event)的理解

    一.多播委托的应用--观察者模式 遇到一个开发的问题? 面试者:以面向对象的思想实现一下的场景: 猫:Miao一声,紧接着引发了一系列的行为~ Miao:引发了一系列的动作: 从代码层面来说:代码这样 ...

  7. 一个简单的RTMP服务器实现 --- RTMP与H264

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  8. Linux快速入门(二)Linux基础操作

    绝对路径和相对路径 Linux中绝对路径指从根目录开始,即/目录. 相对路径是指相对于当前路径开始,即./ 目录,../表示上一级目录路径. pwd pwd命令用于查看当前所在目录. gubeiqin ...

  9. 说说Vue 3.0中Treeshaking特性?举例说明一下?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code eliminat ...

  10. 记录--为什么推荐用svg而不用icon?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 使用背景: 1.因为svg图标在任何设备下都可以高清显示,不会模糊.而icon会在显卡比较低的电脑上有显示模糊的情况 2.svg图标在页面 ...