提问人:crommy 提问时间:6/22/2020 更新时间:6/22/2020 访问量:141
如何确保参数作为常量引用传递?
How to make sure arguments are passed as const reference?
问:
我正在为一些正在学习 C++ 入门课程的学生测试一些代码。 我想测试他们的一些方法是否接受未更改为常量引用的参数,但除了编写一个可以解析其代码中文本的脚本之外,我真的想不出任何聪明的方法来检查这一点。
我想尝试将 Rvalue 传递给他们的方法,如果他们只接受引用,代码不会编译,但这并不能阻止他们仅通过值接收他们的参数。
谢谢!
答:
1赞
Jarod42
6/22/2020
#1
测试学生类的驱动程序可能会检查很多东西:
定期测试的行为。
使用中间常量引用的常量:
Matrix Test_Const_Add(const Matrix& lhs, const Matrix& rhs) { return lhs + rhs; }
如果要测试的类是模板,则可以使用工具化(对调用的方法进行计数)或特定类(不可复制,不可默认构造等)
通过内省的方法/函数签名:
非重载/非模板化函数的函数特征。
分配给成员/函数指针
float (Matrix::*at)(std::size_t, std::size_t) const = &Matrix::at; float& (Matrix::*at)(std::size_t, std::size_t) = &Matrix::at;
您也可以编写工具(例如使用 LibTooling)来检查特定内容。
不过要注意 instrospect,因为可能有几种有效的方法来编写代码(例如重载或默认参数可能会“破坏”函数特征)。
评论
std::vector