在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:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
1月前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
106 5
|
2月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
2月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
57 5
|
2月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
88 6
|
2月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
46 0
|
2月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
39 3
|
2月前
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
401 1
|
2月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
70 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
2月前
|
存储 编译器 C语言
深入计算机语言之C++:类与对象(上)
深入计算机语言之C++:类与对象(上)
|
2月前
|
存储 分布式计算 编译器
深入计算机语言之C++:C到C++的过度-2
深入计算机语言之C++:C到C++的过度-2