图1为类定义指针对象而不初始化
图2为类定义对象而不初始化
类定义指针对象而不初始化为什么编译通过不了?希望讲的详细点
图一代码:
定义类指针变量的时候,只有new了以后才会给变量分配空间,执行Person * p;的时候,不会执行任何的构造函数(这是编译器的一种内存管理策略)。所以,在test1中,执行p->m_A=10这一句的时候,p是一个野指针(没有分配内存空间),所以在编译的时候就会报错。
图二代码:
这个是没有问题的,类变量在声明的时候,编译器会自动调用合适的构造函数,在你的代码中,编译的时候,会调用类的默认构造函数(无参构造函数),会在栈上给p分配内存,所以不会报错。
注意不同类型变量分配内存方式的差异。
如有帮助,望采纳。谢谢。
Person是你定义的类,Person初始化对象后对象则含有Person类的属性,但是用Person来初始化指针,该指针只是具有Person类的类型指针的指向并不名明确,进而无法直接使用去指向某个属性
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!