在c++中传递对象数组给成员函数
passing array of object to member function in c++
我是c++编程的oop初学者。我试图使对象的数组,并将其传递给成员函数排序(class_name[size])排序由他们的id号。我已经努力传递对象数组,但找不到解决方案。请帮帮忙。
通常情况下,数组是通过:
传递的。- 数组名称
- 第一个元素地址
最大的问题是数组的长度(容量)。在C和c++中,数组(不是std::array)不存储它的容量。所以接收函数对数组的结尾没有任何线索。
另一个问题是数组中元素的数量。在C和c++中,数组结构不维护数组中的项数。一个数组可能有32个元素的容量,但只加载了3个元素。
如果您编写自己的函数并使用数组,请提供数组的参数,数组中的元素的容量和数量。
编辑1:
传递指针或第一个元素的地址的一个问题是,指针只指向单个字符,从技术上讲,不是数组对象。假设数组是一个容器,其中元素是连续的,中间没有其他数据类型。因此,您只需要知道数组的第一个位置。
问题是我可以传递一个指向单个字符的指针,而接收函数会将数据视为字符数组而不是单个字符。从而产生未定义的行为,通常称为缓冲区溢出。
因此,为了更加类型安全,在传递数组而不是指向第一个元素的指针时应该使用数组语法。为了提高安全性,可以使用std::vector
或std::array
,或者将数组放在一个结构体中并传递该结构体。
相关文章:
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- C++ - 移动具有固定大小的 c 样式数组成员的类的构造函数
- C++内联数组成员统一初始化
- 有没有办法把字符串数组成员放在".structurevariable"前面?
- 将初始化列表传递给 C++ 中的数组成员
- 具有灵活数组成员的结构的大小
- 初始化固定的 C 数组成员结构
- 带有布尔数组成员的 C++ 结构.如何在主代码中使用
- 我如何通过构造函数大小私人std ::数组成员
- 通过两个下标访问数组成员
- size_t结构非数组成员崩溃的强制转换
- 删除数组成员的更好方法是什么?
- 从C 到C#调用INT []显示随机大数字,而不是原始数组成员
- 在C 中的数组初始化期间使用数组成员
- 友元函数将内存分配给数组成员是否有任何限制?
- 从结构传递数组成员会导致访问读取冲突
- 为什么 const char 数组成员的初始化在构造函数初始值设定项中不兼容
- 如何在 lambda 中访问数组成员
- 将整数值分配为variadic模板列表到静态const std ::数组成员