我刚刚开始学习 C++,现在我正在使用指针。我不明白为什么会发生以下事情。
所以,假设我有两个类 A 和 B。A 有一个整数字段(int valueA),B 有一个指针字段(指向 A),A *a。下面我展示了这两个类。
class A{
A::A(int value){
valueA = value;
}
void A::displayInfo (){
cout<<A<<endl;
}
}
class B{
B::B(){
a=0;
}
void B::printInfo (){
a -> displayInfo(); //Segmentation fault
}
void B::process(){
A new_A = A(5);
a = &new_A;
new_A.displayInfo(); //correct output
a -> displayInfo(); //correct output
}
}
现在,在我的主类中,我执行以下操作:创建 B 类的实例并调用 process() 和 print() 函数。在输出中我得到:5(正确)、5(正确)和分段错误。谁能帮我理解为什么会这样?根据我目前对指针的理解,我做对了吗?
诠释主要(无效){
B b_object();
b_object.process();
b_object.print();
}
为了清楚起见,我有一个 Ah 和 Bh 文件,我在其中声明“int valueA;” 和“A *a;” 分别。而且我知道没有指针可以更轻松地完成此操作,但我正在尝试了解指针如何在这里工作:D