请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

统计词频写创建一个bst对象

BST<string, int> bst = BST<string, int>();
BST<string, int> *bst = new BST<string, int>();

第二种写法和第一种写法相比,有啥不同呢?

正在回答

1回答

liuyubobobo 2019-07-21 01:05:13

在C++语言中,创建对象和创建指针对象不一样。(我不确定严谨术语中文是不是这么说。)


核心区别是,第一个bst是一个对象;第二个bst是一个指针。所有其他区别本质都是因为这个区别。就好比int和int*的区别。


第一种写法创建了一个BST类的对象,是在栈上开的空间,不需要手动回收空间,当前作用与结束自动调用BST的析构函数;

第二中写法创建了一个BST的指针,指向一个BST对象,是在堆上开的空间,需要手动回收空间。


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 unknown花名 #1
    那老师代码中采取第二种写法有啥优点吗?
    回复 有任何疑惑可以回复我~ 2019-07-21 01:08:22
  • liuyubobobo 回复 提问者 unknown花名 #2
    最典型的优点是传参占用空间小,一个指针大小只是一个int而已;另外,指针也是创建链式结构的核心,所以实现链表或者树结构,必须用指针;更复杂一些的,C/C++中的指针,可以直接操作内存空间的关键特性(在大多数其他语言被屏蔽了),所以,也是C/C++可以胜任底层开发的核心原因。对C/C++感兴趣,可以找相关的教材系统学习一下。在这门课程的学习中,我一般不会强调这种语法使用的区别。
    回复 有任何疑惑可以回复我~ 2019-07-21 01:14:26
  • 提问者 unknown花名 回复 liuyubobobo #3
    好的,谢谢老师!
    回复 有任何疑惑可以回复我~ 2019-07-21 08:35:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信