问题遇到的现象和发生背景
图1为类定义指针对象而不初始化
图2为类定义对象而不初始化
类定义指针对象而不初始化为什么编译通过不了?希望讲的详细点
图1为类定义指针对象而不初始化
图2为类定义对象而不初始化
类定义指针对象而不初始化为什么编译通过不了?希望讲的详细点
图一代码:
定义类指针变量的时候,只有new了以后才会给变量分配空间,执行Person * p;的时候,不会执行任何的构造函数(这是编译器的一种内存管理策略)。所以,在test1中,执行p->m_A=10这一句的时候,p是一个野指针(没有分配内存空间),所以在编译的时候就会报错。
图二代码:
这个是没有问题的,类变量在声明的时候,编译器会自动调用合适的构造函数,在你的代码中,编译的时候,会调用类的默认构造函数(无参构造函数),会在栈上给p分配内存,所以不会报错。
注意不同类型变量分配内存方式的差异。
如有帮助,望采纳。谢谢。