gpt4 book ai didi

c++ - 为什么 typedef 不提供函数参数保护?

转载 作者:搜寻专家 更新时间:2023-10-31 00:58:41 26 4
gpt4 key购买 nike

我的印象是 typedef 的一个很好的用例是确保不会将错误类型的参数传递给函数。但这似乎并没有真正由编译器强制执行。

有人能告诉我为什么下面的编译?如果我尝试传递 YourType,我如何才能实现让函数接受 MyType 和编译器提示的目标?

#include <iostream>
#include <string>

typedef std::string MyType;
typedef std::string YourType;

void PrintMyString(const MyType& my_type) {
std::cout << my_type;
}

int main()
{
MyType my_type = "Hello";
YourType your_type = " World";
PrintMyString(my_type);
PrintMyString(your_type); // should fail?
}

最佳答案

typedef 只是类型的别名,它不会创建新类型。如果两个 typedef 的别名相同,那么您可以互换它们。

看起来您可以使用强类型定义,或者您可以将类型包装在包装类中并将包装类用作函数参数。

关于c++ - 为什么 typedef 不提供函数参数保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35018536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com