由买买提看人间百态

topics

全部话题 - 话题: 构造函数
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
b***i
发帖数: 3043
1
you have to understand how to write a correct code.. Then there will be no
problem
x****u
发帖数: 44466
2
你和另一位同学一样,把事情想简单了。M$不是SB,这种实现是迫不得已的。
t****t
发帖数: 6806
3
两个不同来源的程序(DLL或者随便什么)通信, 本来就需要协议. 说.h不变就不需重新
编译当然是有一定common ground的. 你举的例子(cross dll boundary allocation)就
算是第一版也不会work, 跟我说的是两回事.
这就好象我说人要吃饭才能活下去, 你非要说人还得喝水才能, 那不是抬杠么.
b***i
发帖数: 3043
4
the 'similar' implementation in linux, is exactly the correct coding I am
talking about. It is not about com, it is about intelligence to write a
correct code. Heroes will see the same thing. You can't claim you have to
use com to accomplish what you want. Com made it easy for non-smart
programmer because it standardizes the hero's way. Hero's are doing these
thing even before com exists.
xiaoju (可爱的龙猫) 的大作中提到: 】
L***n
发帖数: 6727
5
what Hero?

to
x****u
发帖数: 44466
6
你说到这里,差不多就是COM的意义了。
任何二进制调用都需要协议,模块内这些细节隐藏在编译选项里了,不等于不存在。当
多模块同时存在时,此问题开始突出。COM就是为了解决标准C++中缺少二进制规范的问
题的。
就算全都不理解,真遇到了cross dll boundary allocation问题,解决方案还是COM实
现的一个子集。
b***i
发帖数: 3043
7
这不是谈天之功据为己有吗?解决cross dll boundary allocatio问题,靠的是正确的
逻辑,和对系统的正确理解。解决这些 问题其实也很简单,首先靠的是要有需求,然
后写代码,然后发现问题,调试,然后自然而然就解决了。
就象某人提出C比java慢,然后里面加入了一个循环。这能赖C语言吗?这得赖愚蠢的程
序员。聪明的程序员,是可以自己想明白COM要做的事情的。这就是我说的英雄所见略
同。
难道COM的实现跟长方形圆角一样独特?
k**********g
发帖数: 989
8
COM本质论
C++初级阶段的矛盾论
Windows实践论
you need to read the other two too.
m*******l
发帖数: 12782
9
还有"论编程的持久战"
a****n
发帖数: 1887
10
COM本质论 是DON BOX 经典书,也是最好的关于COM的书籍
这个是典型的DLL HELL 问题,本质是因为程序设计的时候没有设计接口(interface)
, 虽然C++本身并不是源生支持interface, 但是可以使用abstract class without
variables 来设计interface。
external client 如果只依赖于DLL的interface(没有member variables)的话,在其
子类中添加/修改/删除 变量,并不会影响 dll的调用, 因为interface的内存布局没
有改变(这种情况下使用factroy method来分离client和dll), client不需要重新编译
而当external client 直接依赖于DLL内具体类的时候,这个类的添加/修改/删除,都
会影响到client,而这种情况,client需要重新编译
COM在提供interface的基础上更进了一步,提供接口二进制布局规范,这样多语言设计
出来的接口具有相同的二进制布局, 从而在interface programming 基础上支持跨语
言... 阅读全帖
d******i
发帖数: 7160
11
说的好!

编译
d******i
发帖数: 7160
12
放狗又搜了推荐的这三本。
只有矛盾论和持久战match到了老毛的著作。
所以说全没找到。
给个英文名或link?
t****t
发帖数: 6806
13
他唧唧歪歪的说了半天就是说一件事: 如果把类放到DLL里并且准备把DLL做成可替换的
, 那么不能改.h. 如果改了.h, 那DLL就不是可替换的. 其实是一句废话, 但是考虑到
COM就是解决这类问题, 废话的程度还不算太高.

的?
d******i
发帖数: 7160
14
FT。作者就是说:
"只换dll不改h的理想境界在引入com之前做不到"?
这个有什么说头呢?
我老可是抱着读圣书的态度细读的,看来不能希望太高:(
t****t
发帖数: 6806
15
现在看这个有什么用? 浪费时间.
d******i
发帖数: 7160
16
haha,看啥有用?
与其乱跟风,不如静下心看点说原理的东西。
不过老了点是真的。
k**********g
发帖数: 989
s***o
发帖数: 2191
18
现在研究COM颇有点隐入深山苦练秘笈的感觉
b***i
发帖数: 3043
19
然后出来和人单挑,被人一枪干掉.
d**********x
发帖数: 4083
20
haha
re
x****u
发帖数: 44466
21
研究.NET或者Windows Runtime,如果不懂COM的话,基本就是扯淡。
x****u
发帖数: 44466
22
简单点说,就是由于C++的天然缺陷,大多数语言特性在跨编译器时行为都不可预测。
COM就是为了在不破坏C++语法的基础上将尽可能多的现代语言特性引入。没有必要机械
的理解任何COM的特性,从需求出发即可。

的?
x****u
发帖数: 44466
23
关于COM比MSDN写的好的书,似乎真没有。很多所谓经典也在胡说八道。
p*a
发帖数: 592
24
Windows RT别名COM3
x****u
发帖数: 44466
25
现在看什么不浪费时间呢?
觉得COM浪费时间的,还是C++基础学的不够好。把Inside the C++ Object Model仔细
读几遍后,理解ATL/MFC/COM轻而易举。厚书瞬间变成几页纸。
s***o
发帖数: 2191
26
不同意。照你这说法,研究COM不懂汇编还有机器码的话,也成扯淡了
x****u
发帖数: 44466
27
还真没关系。COM这一套搬到什么指令集上都能用,这不ARM上面的Windows RT也是基于
COM的。
t****t
发帖数: 6806
28
说白了COM就是微软搞的一套framework, 这种东西用的时候翻翻手册就好了, 没必要专
门花时间学.
作者写了这么多本来就都是给C++不熟的人看的, C++熟的人不就是我说的那一句话么?
我没学过COM也总结得出来.
x****u
发帖数: 44466
29
你前面的话也有问题。设计COM的原因是因为C++本身有缺陷,即使不改.h,DLL还是相
当的不可靠。
比方说这个DLL A被DLL B和C调用,如果B和C都有不同的配置,那么就可能有麻烦。

?
t****t
发帖数: 6806
30
举个例子来看看不改.h还需要重新编译的?
x****u
发帖数: 44466
31
简单例子,B里面new一个对象传给A后不管,让A释放掉。

是相
t****t
发帖数: 6806
32
为什么这个会有问题呢?
x****u
发帖数: 44466
33
因为DLL B里面创建的对象,DLL A也许无法正确释放。
t****t
发帖数: 6806
34
这个跟C++无关, 是windows的问题. 据我所知unix上没有这样的问题, 至少如果双方用
同样的libc(比如动态链接的libc)的话.
x****u
发帖数: 44466
35
这个问题没那么容易解决,就算是同样的libc,具体怎么分配内存还是可以配置,也是
问题的源泉。
而且对于私有代码大多数时候不可能要求使用同样的C库。
t****t
发帖数: 6806
36
如果你使用私有的C库, 本来就不应该要求别人来释放, 这属于智商的问题. 而且这个
问题跟DLL替换也没有关系, 就算只用一个版本的DLL, 还是有同样的问题, 跟改没改.h
无关.
b***i
发帖数: 3043
37
you have to understand how to write a correct code.. Then there will be no
problem
x****u
发帖数: 44466
38
你和另一位同学一样,把事情想简单了。M$不是SB,这种实现是迫不得已的。
t****t
发帖数: 6806
39
两个不同来源的程序(DLL或者随便什么)通信, 本来就需要协议. 说.h不变就不需重新
编译当然是有一定common ground的. 你举的例子(cross dll boundary allocation)就
算是第一版也不会work, 跟我说的是两回事.
这就好象我说人要吃饭才能活下去, 你非要说人还得喝水才能, 那不是抬杠么.
b***i
发帖数: 3043
40
the 'similar' implementation in linux, is exactly the correct coding I am
talking about. It is not about com, it is about intelligence to write a
correct code. Heroes will see the same thing. You can't claim you have to
use com to accomplish what you want. Com made it easy for non-smart
programmer because it standardizes the hero's way. Hero's are doing these
thing even before com exists.
xiaoju (可爱的龙猫) 的大作中提到: 】
L***n
发帖数: 6727
41
what Hero?

to
x****u
发帖数: 44466
42
你说到这里,差不多就是COM的意义了。
任何二进制调用都需要协议,模块内这些细节隐藏在编译选项里了,不等于不存在。当
多模块同时存在时,此问题开始突出。COM就是为了解决标准C++中缺少二进制规范的问
题的。
就算全都不理解,真遇到了cross dll boundary allocation问题,解决方案还是COM实
现的一个子集。
b***i
发帖数: 3043
43
这不是谈天之功据为己有吗?解决cross dll boundary allocatio问题,靠的是正确的
逻辑,和对系统的正确理解。解决这些 问题其实也很简单,首先靠的是要有需求,然
后写代码,然后发现问题,调试,然后自然而然就解决了。
就象某人提出C比java慢,然后里面加入了一个循环。这能赖C语言吗?这得赖愚蠢的程
序员。聪明的程序员,是可以自己想明白COM要做的事情的。这就是我说的英雄所见略
同。
难道COM的实现跟长方形圆角一样独特?
k**********g
发帖数: 989
44
COM本质论
C++初级阶段的矛盾论
Windows实践论
you need to read the other two too.
m*******l
发帖数: 12782
45
还有"论编程的持久战"
a****n
发帖数: 1887
46
COM本质论 是DON BOX 经典书,也是最好的关于COM的书籍
这个是典型的DLL HELL 问题,本质是因为程序设计的时候没有设计接口(interface)
, 虽然C++本身并不是源生支持interface, 但是可以使用abstract class without
variables 来设计interface。
external client 如果只依赖于DLL的interface(没有member variables)的话,在其
子类中添加/修改/删除 变量,并不会影响 dll的调用, 因为interface的内存布局没
有改变(这种情况下使用factroy method来分离client和dll), client不需要重新编译
而当external client 直接依赖于DLL内具体类的时候,这个类的添加/修改/删除,都
会影响到client,而这种情况,client需要重新编译
COM在提供interface的基础上更进了一步,提供接口二进制布局规范,这样多语言设计
出来的接口具有相同的二进制布局, 从而在interface programming 基础上支持跨语
言... 阅读全帖
d******i
发帖数: 7160
47
说的好!

编译
d******i
发帖数: 7160
48
放狗又搜了推荐的这三本。
只有矛盾论和持久战match到了老毛的著作。
所以说全没找到。
给个英文名或link?
b*******s
发帖数: 5216
49
COM is dead,别在这个上面花精力了

的?
S**I
发帖数: 15689
50
也不能说是死了,微软为驱动开发搞的WDF本质上就是COM。
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)