在C++语言中类的成员函数

本文涉及的产品
访问控制,不限时长
简介: 在C++语言中类的成员函数


在C++语言中,类的成员函数是指那些把定义和原型写在类定义内部的函数,它们是类的一个成员,可以访问对象中的所有成员。类的成员函数是面向对象编程的核心组成部分,因为它们定义了类的行为和功能。

成员函数的声明和定义

在类定义内部,成员函数的声明包括函数的返回类型、函数名以及可能的参数列表。函数的定义是在类外部,通常与声明放在一起,但也可以分开。如果函数定义在类外部,必须在类内部声明函数,并使用作用域解析运算符::来指明函数所属的类。

例如:

image.png

在这个例子中,Box类有一个名为volume的成员函数,它计算盒子的体积。首先,在类内部声明了volume函数,然后在外部定义了它。

成员函数的访问控制

成员函数可以根据访问控制符分为公共(public)、私有(private)和受保护(protected)成员函数。公共成员函数可以从类的内部和外部访问;私有成员函数只能从类的内部访问;受保护成员函数类似于私有成员函数,但它们还可以被派生类访问。

例如:

image.png

在这个例子中,Base类有一个受保护的protectedData成员变量和两个成员函数:publicFunction和privateFunction。Derived类是Base的公有派生类,它可以访问protectedData成员变量,但不能访问privateData成员变量。

成员函数的默认访问权限

如果不显式指定成员函数的访问控制符,则成员函数的默认访问权限取决于其定义的位置。如果在类内部定义,则默认为私有;如果在外部定义,则默认为公共。

例如:

image.png

在这个例子中,即使没有明确指定volume函数的访问控制符,它也是公共的,因为它在类外部定义。

成员函数的调用

成员函数可以通过对象名加方法名的形式调用,也可以通过类名加作用域解析运算符::再加方法名的形式调用。

例如:

image.png

成员函数的作用域

成员函数的作用域是整个类体,这意味着成员函数可以访问类内的所有成员,包括其他成员函数和成员变量。

总之,C++类的成员函数是定义类行为的关键。它们可以访问类的所有成员,并通过对象名或类名来调用。成员函数的访问控制符决定了它们可以被哪些部分访问,这是面向对象编程中的一个重要概念。

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
6天前
|
存储 算法 搜索推荐
【C++】类的默认成员函数
【C++】类的默认成员函数
|
4天前
|
编译器 C++
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
|
4天前
|
编译器 C++
virtual类的使用方法问题之静态和非静态函数成员在C++对象模型中存放如何解决
virtual类的使用方法问题之静态和非静态函数成员在C++对象模型中存放如何解决
|
12天前
|
编译器 C++ 容器
C++语言的基本语法
想掌握一门编程语言,第一步就是需要熟悉基本的环境,然后就是最重要的语法知识。 C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。 类 - 类可以定义为描述对象行为/状态的模板/蓝图。 方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。 即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。 完整关键字
29 2
|
27天前
|
C++ 运维
开发与运维函数问题之析构函数在C++类中起什么作用如何解决
开发与运维函数问题之析构函数在C++类中起什么作用如何解决
29 11
|
27天前
|
C++ 运维
开发与运维函数问题之C++类的简单示例如何解决
开发与运维函数问题之C++类的简单示例如何解决
43 10
|
27天前
|
存储 C++ 运维
开发与运维函数问题之使用C++标准库中的std::function来简化回调函数的使用如何解决
开发与运维函数问题之使用C++标准库中的std::function来简化回调函数的使用如何解决
31 6
|
4天前
|
Dart 编译器 API
Dart ffi 使用问题之在C++线程中无法直接调用Dart函数的问题如何解决
Dart ffi 使用问题之在C++线程中无法直接调用Dart函数的问题如何解决
|
26天前
|
前端开发 编译器 程序员
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
|
10天前
|
JavaScript C++
【C++ visual studio】解决VS报错:error C2447: “{”: 缺少函数标题(是否是老式的形式表?)【亲测有效,无效捶我】
【C++ visual studio】解决VS报错:error C2447: “{”: 缺少函数标题(是否是老式的形式表?)【亲测有效,无效捶我】