首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++中的指针有关问题

2013-07-01 
C++中的指针问题在C语言中,指针的巨大作用是毋须质疑的,因此,你若是喜欢C语言,则怎么夸奖C语言中的指针都

C++中的指针问题
在C语言中,指针的巨大作用是毋须质疑的,因此,你若是喜欢C语言,则怎么夸奖C语言中的指针都不为过。

但是,在C++中,还是这个样子吗?我们是不是还应该用对待C语言中的指针的态度,来对待C++语言中的指针呢?

我个人认为,C++相对于C来说,其中一个很大的进步,就是在多方面实现了内存的自动管理,而指针的使用,多半都和手动管理内存有关。

我个人认为,内存的自动管理,能有效抑制在一个大的项目中由于内存问题而引发的BUG,因此,我个人觉得,C++中的指针,能不用,则不用。

不知诸位以为如何?
[解决办法]
看你怎么用,是把C++当做过程化的语言来使用,还是发挥面向对象的威力来使用C++
[解决办法]
恰恰的,C++中引入引用就是为了防止指针出现的问题,但是引用不可能时时刻刻代替指针

现在基本上所有的项目里面都指针满天飞,C++沉思录的作者也说了要避免使用指针,但现实中真的很难
[解决办法]
赞下这个话题!说下我的看法

个人观点支持LZ的看法,C++指针,能不用,则不用
有的时候,我们似乎确实能避开使用指针,例如用引用代替指针传参,虽然引用本质上也是个指针。
但是,有的时候,我们无法避开指针,无法抵挡使用指针的诱惑,因为它太强大了
例如:动态分配内存、多态
[解决办法]
大家对手动档的车和自动档的车都各有所好。

话说我假如我只会C++STL部分,有一天我遇见了看见别人的c代码指针链表、数组于是我惊呼,哇!这不就是STL的一种实现吗(STL不就是对这些玩意的封装吗)(非模板)

后来我学了学了智能指针,设计模式,等一些有关封装和所谓自动化东西,于是有一天我看见java:哇这不就是对是对这些玩意的再次封装吗?

类似的,比如QT很多人只觉得他简单、好用(其中包含没有计数含量的意味),其实他真的很美(为什么QT是对设计模式的经典实现呢?)..很美....另外不觉得用QT有点用JAVA的味道吗?
c++长远的趋势肯定是自动化的管理,但是对于手动挡部分他最多仅仅是建议不要去用,不敢废掉...
[解决办法]

引用:
按照科幻电影的描述,未来的汽车,应该是保留手动挡,而自动档应该逐步进化为人通过语音和智能电脑交流,达到控制的效果,且推荐使用这种方式。

因为如果不是出于爱好和研究需要,一般人眼里,汽车就是一个代步工具而已,能达到代步的目的就行。至于达到这个目的的方式,越简单且越安全越好。



基本同意你的观点,把“越简单且越安全越好”改成“越简单且越安全且越快越好”就更好了。嘿嘿!

问题是普通百姓,不认为程序员只是一个普通的电脑应用的使用者而已。对于普通百姓,电脑不过可以浏览一下网站、发发邮件诸如此类的工具而已,那电脑的软硬件开发人员就不一样了,他们不仅要会C/C++,甚至还要会汇编。

使用Java的人,可以不懂指针,但写JVM的人就必须要懂指针。

对不同的人群,有不同的要求而已。
[解决办法]
“我个人认为,内存的自动管理,能有效抑制在一个大的项目中由于内存问题而引发的BUG,因此,我个人觉得,C++中的指针,能不用,则不用。”

如果楼主是这么认为的话,俺是否可以得出这样的推论:
“我个人认为,内存的自动管理,能有效抑制在一个大的项目中由于内存问题而引发的BUG,因此,我个人觉得,C++中的指针,能不用,则不用。”
也就是说,有两种可能的选择:
1. 要么不用C/C++
2. 要么让C/C++没有指针
只有满足上面的两条中的至少一条,才能有效抑制在一个大的项目中由于内存问题而引发的BUG。
但是,C/C++在可以预见的未来,不可能没有指针。所以推论就是:
“我个人认为,内存的自动管理,能有效抑制在一个大的项目中由于内存问题而引发的BUG,因此,我个人觉得,C++中的指针,能不用,则不用。进一步地,能不用C++,就不用C++,否则无法有效抑制在一个大的项目中由于内存问题而引发的BUG””
这样的结论,看起来好像总不那么顺眼...

有计算机的历史以来,C/C++完成的大型项目,恐怕C#和Java加起来的总和也远远不及吧,此其一。其二,就算有自动内存管理的C#和Java,在用他们写程序是,所产生的BUG也一点不比C/C++少,比如用Java写某些特定的网络程序的时候很容易产生内存泄露,而且比C/C++类似的情况更加隐蔽,更难debug。
[解决办法]
个人觉得,能用就用,用多了,错多了,就熟了。
[解决办法]
我觉得指针问题出在内存处理的时候,但是这是一个强大的地方。
在底层,不可能拒绝指针的使用,但是动态内存的管理需要对高层进行屏蔽。就像STL中,内存管理出在最底层,而且上层将不再直接接触动态的内存管理。
所以我的观点是,指针使用是必要的,动态内存使用也是必要的,但是他们的使用必须被限定在一定的范围,我通常就是把他们限定在初始化和释放两个块中。有的不能够这样限定,就的多花心思注意了。

[解决办法]
自古英雄,无不誉满天下,谤满天下。C/C++中的指针亦是如此。
[解决办法]
C++中指针的应用多数性况都被封装在对象或是过程里.只要选对应用场景,直接使用也并无不可.应该不存在能不就不用一说.
而内存管理的问题多数情况是设计不周带来的,而不是使用指针带来的.只要选对了内存管理的模型,几乎不会有什么大的内存管理BUG.但这个要有经验的支撑,对于新手来说,确实是一个比较大的门槛.自动的内存管理虽然在很大程度上可以解决一部分内存问题,但也有诸多限制.有时候更会带来性能问题,并不是万全之策.



其实到头来,这些问题都涉及到C++的处世哲学,就是"务实"---根据实际情况在合适的场合使用适当的技术.不能因噎废食.
[解决办法]

引用:
在C语言中,指针的巨大作用是毋须质疑的,因此,你若是喜欢C语言,则怎么夸奖C语言中的指针都不为过。

但是,在C++中,还是这个样子吗?我们是不是还应该用对待C语言中的指针的态度,来对待C++语言中的指针呢?

我个人认为,C++相对于C来说,其中一个很大的进步,就是在多方面实现了内存的自动管理,而指针的使用,多半都和手动管理内存有关。

我个人认为,内存的自动管理,能有效抑制在一个大……

c++不是引入了智能指针吗,还有句柄。可以将指针封装成类,利用引用计数技术,能避免内存的泄漏,但是很麻烦
[解决办法]
个人使用习惯的问题,都是语言工具罢了
[解决办法]
众多语言当中, C++依旧代表的是自由, 成败决定于人, 而不是工具或语言.
自由永远是让人最向往, 也是需要代价最高的.

不精通C++的人说C++不好, 难用, 难学, 垃圾. 
精通的人自然知道C++的好.
这叫各花入各眼, 各有不同

热点排行