<分区>
我正在学习一门非常有趣的 CE 类(class)和一门 C++ 类(class)。在 CE 中,我对内存的工作原理有了更深入的了解。那么,为什么我们需要在c++中显式声明指针类型呢?指针只是一个(或多个)存储单元,用于保存数据类型的地址;虽然数据类型显然需要不同的内存分配,但为什么需要指针呢?也就是,如果指针类型都具有相同的内容(内存地址),为什么不能在 C++ 中对其进行泛化?
<分区>
我正在学习一门非常有趣的 CE 类(class)和一门 C++ 类(class)。在 CE 中,我对内存的工作原理有了更深入的了解。那么,为什么我们需要在c++中显式声明指针类型呢?指针只是一个(或多个)存储单元,用于保存数据类型的地址;虽然数据类型显然需要不同的内存分配,但为什么需要指针呢?也就是,如果指针类型都具有相同的内容(内存地址),为什么不能在 C++ 中对其进行泛化?
最佳答案
因为使用 C++ 的主要原因之一是类型安全。
如果语言不知道 int*
和 MyClass*
之间的区别,那么您可能会不小心分配一个 int*
到 MyClass*
,您的程序的运行时行为将是未定义的。 C++ 的目标是让编译器检测此类错误,如果没有不同的指针类型,这是不可能的。
struct MyClass
{
double d;
};
void f(MyClass* ptr)
{
ptr->d = 1.0;
}
int main()
{
int i = 0;
f(&i); // error detected at compile time
}
关于c++ - 为什么我们需要在 C++ 中显式声明指针类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49219070/