gpt4 book ai didi

c++ - C++ 中的空指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:42 26 4
gpt4 key购买 nike

我在网站上看到这个例子,网站提到:-“它的用途之一(空指针)可能是将泛型参数传递给函数”

// increaser
#include <iostream>
using namespace std;

void increase (void* data, int psize)
{
if ( psize == sizeof(char) )
{ char* pchar; pchar=(char*)data; ++(*pchar); }
else if (psize == sizeof(int) )
{ int* pint; pint=(int*)data; ++(*pint); }
}

int main ()
{
char a = 'x';
int b = 1602;
increase (&a,sizeof(a));
increase (&b,sizeof(b));
cout << a << ", " << b << endl;
return 0;
}

像下面这样写代码不是更简单吗?

void increaseChar (char* charData)
{
++(*charData);
}

void increaseInt (int* intData)
{
++(*intData);
}

int main ()
{
char a = 'x';
int b = 1602;
increaseChar (&a);
increaseInt (&b);
cout << a << ", " << b << endl;
string str;
cin >> str;
return 0;
}

它的代码更少,而且非常简单。在第一个代码中,我必须在这里发送数据类型的大小,但我没有!

最佳答案

最好使函数类型安全且通用。最好通过引用而不是指针来获取参数:

template <typename T>
void increment(T& data) {
++data;
}
在 C++ 中应尽可能避免

void*,因为模板和继承提供了类型安全的替代方案。

关于c++ - C++ 中的空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4304940/

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