学 C++ 的一点感悟,不知是否正确,请各位请点,说得有内容的我会给分的。(0分)

教父

Unregistered / Unconfirmed
GUEST, unregistred user!
昨晚在看C++的书时突然有一点感悟:C++其实无所不对象,无处不对象,就连内建的类型如
int也是一个对象,所以它可以通过int num(100);这种称为“构造函数语法”的语句来初始
化,而 int num=100;则是衍袭 C语言而来。
所以象操作符重载也就可以清楚了,因为他们也是对象,当然可以重载了。以前怎么就没
有想到这一点呢?呵呵
在Pascal中是否也是同样的道理呢?只是它的 num :integer;这样的定义方式使它没有办法
象C++那样进行初始化。
这是本人的一点看法,不知对不对,还请各位高手指点!
说得有点内容的我会酌情给分。
 
高,实在是高!!!
 
对.C++充分体现面向对象的思想,所有的数据类型面向用户来说是具有相同属性与值集的对象的抽象
,面向程序开发者则是是一个数据结构,都是一个值集与其上定义的一组操作的组合,也就是这些对象
的状态与引起状态变迁的事件.操作符只是一些特殊的函数,其重载本质与其它函数重载没有区别.
需要说明的是int num=100;在C++不同与C中,C的构造函数是可以重载的,其中有的定义了一个赋值(copy)
构造 ClassName&
ClassName(ClassName &ClassName)(具体形态怎么样不记得了,而=在这里正好重载为
调用这个构造(当然C++的赋值还有深Copy与浅Copy).....................
对与不对先乱说一通
 
教父,有什么c++的书可以推荐推荐的吗?
 
真是笑话
int num=100是对象吗
如果这么说的话那么所有的编程语言都是真正面对对象的
for(i=1;i<=100;i++)也是面对对象的语句了
因为是面对i这个对象的是吗
错了
如果说真正面对对象的那么不如去学java
 
最近买了两本书。
侯捷翻译的
<<Esssential C++>>
<<Effictive C++ 2e>>
我以前对C是迷迷糊糊的,现在已经是懵懵懂懂的了。
推荐象我这样的C++新手们,一快来看一下。

 
>>昨晚在看C++的书时突然有一点感悟:C++其实无所不对象,无处不对象,就连内建的类型如
>>int也是一个对象,所以它可以通过int num(100);这种称为“构造函数语法”的语句来初始
>>化,而 int num=100;则是衍袭 C语言而来。
我知道教父心里明白,没说清楚,按理来说,正规的说法是:int是数据类型,num是对象,
但如果象sonie那样理解 --> “所有的数据类型面向用户来说是具有相同属性与值集的对象的
抽象”,说int就是对象不是不可以,正如对象和实例的概念就很相近,基本可认为是一样的。
另外,需要指出的是C++语言不是完全的,纯粹的面相对象语言,真正意义的面相对象语言是
没有静态联编的,都是动态联编。而C++中两者都存在。
>>所以象操作符重载也就可以清楚了,因为他们也是对象,当然可以重载了。以前怎么就没
>>有想到这一点呢?呵呵

如果说刚才那段话可以将就那么说,这断话就不能再将就了。
下面这句话引自《C++语言及其程序设计教程》,张国峰 编著,电子工业出版社
第10章 操作符重载 的第一句话
>> 操作符是一些预定义的函数的名字
>> 重载是说一个名字可以为多个函数命名。。。。。。
既然操作符是函数,就是方法,怎么能又是对象呢?
sonie的这句话“在C++不同与C中,C的构造函数是可以重载的......”
C语言是面向过程的语言,哪来的构造函数?
一家之言,不一定对,仅供参考
 
太好啦!学!
 
仅仅考虑OO方面的话,C++ 和 Object Pascal 的差别并不算很大,
运算符重载也不是特别必要,Java就不支持,但没人说Java不够OO。
这一特性倒是在GP(Generic Programing)中用的特别多。
 
在Delphi中,,非逻辑变量,可以通过
num :integer=10来初始化
 
to chinaplate:呵呵,我就是那两本书.
to HD_copy:“正规的说法是:int是数据类型,num是对象”,是不是应该说:“int 是对象,
num是实例”更确切些?
操作符重载看来是我理解错了,这个重载是C++的功劳,而不是对象的功劳。 :)
至于sonie的这句话“在C++不同与C中,C的构造函数是可以重载的......”我想是他的笔误吧。
to 不能没有你:有“面对对象的语句”这种说法吗?
 
当然没有这种说法了
在oop中对对象的定义究竟是什么呢
难道连普通变量也成了对象
那么还要c++干什么有c已经可以了嘛
 
C#就彻底多了。
int i = 3;
string s = 3.tostring;
连3也是对象
 
最基本的就不是对象了,呵!
 
hehe:这里是笔误
sonie的这句话“在C++不同与C中,C的构造函数是可以重载的......”
~~~~~应该是c++
C语言是面向过程的语言,哪来的构造函数?

c#不见得比c++更面向对象.
 
另java与c#比之c++的优势并不是它们比c++更优秀更面向对象,而是它们的平台无关及无指针
(由自己来管理内存,这里delphi的op也做到了)等特性,从理论上说来smalltalk是最优秀的面向对象设计语言.
但我要说一句的是,我不是说C++怎么样好,我更认为语言不重要,关键是面向对象的思想.因为
除了面向对象的程序设计给我们带来好处外,面向对象的分析面向对象的设计也许会更重要.
 
什么是对象,比如你的女朋友,要占用一定的空间(电脑里占用内存),有一定的重量,
会生小孩(电脑里是有执行功能),如成植物人,又死不了,则是废人(电脑是内存泄漏),
如和你结婚,白头到老过世后,一动不动,是一个常量,还是一个对象,火化后,灰飞烟灭(电脑是关掉电源开关)。
 
向教父握握手.
多几个象 教父 的朋友大富翁一定会更上一层楼.
施比受更有福!
 
是否是对象不能单从语法上来看,其实C++中有很多“看上去”象对象而实际上不是对象的东东
,比如一些原始类型int ,do
uble等。语法上的表示不能说我们就可以拿他当对象来看待了。
 
施比受更有福!
好。
 

Similar threads

回复
0
查看
653
不得闲
回复
0
查看
679
不得闲
回复
0
查看
811
不得闲
回复
0
查看
666
不得闲
顶部