采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
BST<string, int> bst = BST<string, int>(); BST<string, int> *bst = new BST<string, int>();
第二种写法和第一种写法相比,有啥不同呢?
在C++语言中,创建对象和创建指针对象不一样。(我不确定严谨术语中文是不是这么说。)
核心区别是,第一个bst是一个对象;第二个bst是一个指针。所有其他区别本质都是因为这个区别。就好比int和int*的区别。
第一种写法创建了一个BST类的对象,是在栈上开的空间,不需要手动回收空间,当前作用与结束自动调用BST的析构函数;
第二中写法创建了一个BST的指针,指向一个BST对象,是在堆上开的空间,需要手动回收空间。
继续加油!:)
那老师代码中采取第二种写法有啥优点吗?
最典型的优点是传参占用空间小,一个指针大小只是一个int而已;另外,指针也是创建链式结构的核心,所以实现链表或者树结构,必须用指针;更复杂一些的,C/C++中的指针,可以直接操作内存空间的关键特性(在大多数其他语言被屏蔽了),所以,也是C/C++可以胜任底层开发的核心原因。对C/C++感兴趣,可以找相关的教材系统学习一下。在这门课程的学习中,我一般不会强调这种语法使用的区别。
好的,谢谢老师!
登录后可查看更多问答,登录/注册
课程专为:短时间内应对面试、升职测评等艰巨任务打造
8.8k 21
5.7k 3
4.9k 5
1.4k 18