精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>C、C++语言基础>>大家来讨论一下private

主题:大家来讨论一下private
发信人: wokao()
整理人: girlrong(1999-11-09 10:32:16), 站内信件
请问各位大侠!当有文件被操作(del,rename,move..)
是否window会发消息?

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.110.198]
发信人: tengel (Dragon), 信区: CLanguage
标  题: Re: 请问大侠!当有文件被操作(del,move..)是否win会发消息?
发信站: 网易虚拟社区 (Wed Sep 15 09:13:07 1999), 站内信件

【 在 wokao (wokao) 的大作中提到: 】
: 请问各位大侠!当有文件被操作(del,rename,move..)
: 是否window会发消息?

应该不会,但可以使用VXD监测,呵呵

--
                                           _
   O           @___       G               : \  
  /|__       /|/         /\|\             :  \
 /|/_       / /\         \ X_             :   \
  /  |     __/  \          | \      0     :    \
 /    0        0|          /              :     \

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.33.108]
发信人: liouyong (柳永), 信区: CLanguage
标  题: Re: 请问大侠!当有文件被操作(del,move..)是否win会发消息?
发信站: 网易虚拟社区 (Wed Sep 15 13:46:47 1999), 站内信件

【 在 tengel (Dragon) 的大作中提到: 】
: 【 在 wokao (wokao) 的大作中提到: 】
: : 请问各位大侠!当有文件被操作(del,rename,move..)
: : 是否window会发消息?

:    .......

请问VXD如何监测?告知方法,谢谢!

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.98.120.126]
发信人: jalinsoo (jalinsoo), 信区: CLanguage
标  题: Re: 请问大侠!当有文件被操作(del,move..)是否win会发消息?
发信站: 网易虚拟社区 (Wed Sep 15 15:41:47 1999), 站内信件

【 在 wokao (wokao) 的大作中提到: 】
: 请问各位大侠!当有文件被操作(del,rename,move..)
: 是否window会发消息?

在这种情况下,WINDOW是不会发通知消息的.
你可以将整个文件系统映射到一个文件中,然后定时的重映射,
再比较两次映射的文件是否一致就可以知道文件系统是否被更改了


--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.183.48]
发信人: wokao (wokao), 信区: CLanguage
标  题: Re: 请问大侠!当有文件被操作(del,move..)是否win会发消息?
发信站: 网易虚拟社区 (Thu Sep 16 11:01:29 1999), 站内信件

【 在 jalinsoo (jalinsoo) 的大作中提到: 】
: 【 在 wokao (wokao) 的大作中提到: 】
: : 请问各位大侠!当有文件被操作(del,rename,move..)
: : 是否window会发消息?

:    .......
VXD我不懂,但用这种文件映射的方法也可以,只是这种方法比较机械,也不
能用于全局的DISK,某一个文件目录还是有用的。
thank you have give me a very simple and useful solution.


--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.101.178.235]
发信人: jiangsheng (蒋晟), 信区: CLanguage
标  题: Re: 请问大侠!当有文件被操作(del,move..)是否win会发消息?
发信站: 网易虚拟社区 (Fri Sep 24 00:03:03 1999), 站内信件

【 在 wokao (wokao) 的大作中提到: 】
: 请问各位大侠!当有文件被操作(del,rename,move..)
: 是否window会发消息?
函数WINSHELLAPI void WINAPI SHChangeNotify(
    LONG wEventId, 
    UINT uFlags, 
    LPCVOID dwItem1, 
    LPCVOID dwItem2
);
提请外壳(通常是explorer.exe)注意有文件操作。参见
MSDN/SDK/Shell And Common Controls/
Windows Shell API/Shell Reference/
Functions/SHChangeNotify
可以用一个线程监视文件,详细资料参见
http://www.relisoft.com/win32/watcher.html
 


--
※ 修改:.jiangsheng 于 Sep 24 01:55:09 修改本文.[FROM: 203.93.7.52]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 203.93.7.52]
发信人: jiangsheng (蒋晟), 信区: CLanguage
标  题: Re: 请问大侠!当有文件被操作(del,move..)是否win会发消息?
发信站: 网易虚拟社区 (Fri Oct  1 15:53:09 1999), 站内信件

【 在 wokao (wokao) 的大作中提到: 】
: 请问各位大侠!当有文件被操作(del,rename,move..)
: 是否window会发消息?
HANDLE FindFirstChangeNotification(
  LPCTSTR lpPathName,    // pointer to name of directory to watch
  BOOL bWatchSubtree,    // flag for monitoring directory or 
                         // directory tree
  DWORD dwNotifyFilter   // filter conditions to watch for
);
 


--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 203.93.7.52]
发信人: crazyjava (骄傲的中国人), 信区: C
标  题: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Sun Jul 18 12:35:02 1999), 站内信件

很久没有用C++来写程序了,所以现在都是凭以前的经验
来解决一些朋友提出的问题。发现有些基本概念现在好象
糊涂了 :(

有以下小程序:(希望大家看完后不要急于把它compile,
先自己分析一下)

#include <stdio.h>

class A
{
  private:
      int m_iData;
  public:
      A() { m_iData = 0; }
      A( int i ) { m_iData = i; }

      void Show() 
        { ::printf( "%d\n", m_iData ); }
      void Show( A a ) 
        { ::printf( "%d\n", a.m_iData ); }
};

void main()
{
      A a1( 10 );
      A a2( 20 );
      a1.Show();
      a1.Show( a2 );
}

我看完后,就脱口而出说,这程序错了!
因为 m_iData 是 private. 而  
void Show( A a ) 
{ ::printf( "<%d>\n", a.m_iData ); }
中竟然可以直接用 a.m_iData, 也就是说 
a1.Show( a2 ) 中 a1 可以直接使用 a2 的 
private data,这当然不行了! 结果。。。 :P

大家又认为如何??


--
孤身走我路...
其实,路,两个人一起走比一个人要好。
email: [email protected]

※ 修改:.crazyjava 于 Jul 18 12:46:20 修改本文.[FROM: 139.87.93.202]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 139.87.93.202]
发信人: Ericuo (帅呆了), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易 BBS (Sun Jul 18 13:34:40 1999), 转信


肯定是可以的,
在本类中用到本类为类型的对象时,
是可以直接访问私有成员的。

【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: 很久没有用C++来写程序了,所以现在都是凭以前的经验
: 来解决一些朋友提出的问题。发现有些基本概念现在好象
: 糊涂了 :(

: 有以下小程序:(希望大家看完后不要急于把它compile,
: 先自己分析一下)

: #include <stdio.h>

: class A
: {
:   private:
:       int m_iData;
:   public:
:       A() { m_iData = 0; }
:       A( int i ) { m_iData = i; }

:       void Show() 
:         { ::printf( "%d\n", m_iData ); }
:       void Show( A a ) 
:         { ::printf( "%d\n", a.m_iData ); }
: };

: void main()
: {
:       A a1( 10 );
:       A a2( 20 );
:       a1.Show();
:       a1.Show( a2 );
: }

: 我看完后,就脱口而出说,这程序错了!
: 因为 m_iData 是 private. 而  
: void Show( A a ) 
: { ::printf( "<%d>\n", a.m_iData ); }
: 中竟然可以直接用 a.m_iData, 也就是说 
: a1.Show( a2 ) 中 a1 可以直接使用 a2 的 
: private data,这当然不行了! 结果。。。 :P

: 大家又认为如何??




--
※ 来源:.网易 BBS bbs.netease.com.[FROM: 210.75.42.134]
发信人: crazyjava (骄傲的中国人), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Sun Jul 18 16:15:36 1999), 站内信件

【 在 Ericuo (帅呆了) 的大作中提到: 】
: 肯定是可以的,
: 在本类中用到本类为类型的对象时,
: 是可以直接访问私有成员的。
: 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
:    .......

请教一下: 

a1.Show( a2 ) 中 a1 可以直接使用 a2 的 
private data 你又如何理解呢?

--
孤身走我路...
其实,路,两个人一起走比一个人要好。
email: [email protected]

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 139.87.93.243]
发信人: Ericuo (帅呆了), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易 BBS (Sun Jul 18 17:59:15 1999), 转信


具体的解释我忘记了,
不过因为对a2的private data的使用是在show()这个函数中,
而这个函数又在类A中,所以一定可以这样用的。
另:当对象做参数时,会调用拷贝构造函数的

【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: 【 在 Ericuo (帅呆了) 的大作中提到: 】
: : 肯定是可以的,
: : 在本类中用到本类为类型的对象时,
: : 是可以直接访问私有成员的。
: : 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: :    .......

: 请教一下: 

: a1.Show( a2 ) 中 a1 可以直接使用 a2 的 
: private data 你又如何理解呢?


--
※ 来源:.网易 BBS bbs.netease.com.[FROM: 210.75.42.133]
发信人: crazyjava (骄傲的中国人), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Mon Jul 19 05:23:16 1999), 站内信件

【 在 Ericuo (帅呆了) 的大作中提到: 】
: 具体的解释我忘记了,
: 不过因为对a2的private data的使用是在show()这个函数中,
: 而这个函数又在类A中,所以一定可以这样用的。
: 另:当对象做参数时,会调用拷贝构造函数的
:    .......

我奇怪的是,在OOP的思想中,每个object的private data
是不应该给其它object 直接使用的,就好象有两个人a1,a2,
他们都有自己的私隐,a1不允许直接知道和使用a2的私隐。
而在C++的语法中却违反了这一OOP的思想。

--
孤身走我路...
其实,路,两个人一起走比一个人要好。
email: [email protected]

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 139.87.93.207]
发信人: nxin (角虎), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Mon Jul 19 09:30:19 1999), 站内信件

【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: 【 在 Ericuo (帅呆了) 的大作中提到: 】
: : 具体的解释我忘记了,
: : 不过因为对a2的private data的使用是在show()这个函数中,
: : 而这个函数又在类A中,所以一定可以这样用的。
:    .......

C++中的private保护是基于类的,类A的成员函数可以访问所有类A对象
的private成员变量,编译时没有办法知道所访问的对象是否是当前对象。
你说的OOP概念不错,但C++不是纯面向对象语言,不少地方打破了界限,
这是继承C的结果。
纯面向对象语言例如smalltalk中不允许直接访问成员变量,象
a.m_iData这种写法语法上就是不支持的,要想访问需要写个函数
int A::getdata(){return m_iData;}
用a.getdata()的方式访问,这样就保证了只有成员函数才能访问自己
的对象。但是不支持a.m_iData的写法在C++中是不可想象的。

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 203.196.1.253]
发信人: Ericuo (帅呆了), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易 BBS (Mon Jul 19 10:06:01 1999), 转信


在类中允许使用也是为了方便起见,不然的话会很麻烦,
这也是灵活性和数据的隐藏不能共存吧

【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: 【 在 Ericuo (帅呆了) 的大作中提到: 】
: : 具体的解释我忘记了,
: : 不过因为对a2的private data的使用是在show()这个函数中,
: : 而这个函数又在类A中,所以一定可以这样用的。
: : 另:当对象做参数时,会调用拷贝构造函数的
: :    .......

: 我奇怪的是,在OOP的思想中,每个object的private data
: 是不应该给其它object 直接使用的,就好象有两个人a1,a2,
: 他们都有自己的私隐,a1不允许直接知道和使用a2的私隐。
: 而在C++的语法中却违反了这一OOP的思想。


--
※ 来源:.网易 BBS bbs.netease.com.[FROM: 210.75.42.129]
发信人: vcc (vcc), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Mon Jul 19 12:03:18 1999), 站内信件

【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: 【 在 Ericuo (帅呆了) 的大作中提到: 】
: : 具体的解释我忘记了,
: : 不过因为对a2的private data的使用是在show()这个函数中,
: : 而这个函数又在类A中,所以一定可以这样用的。
:    .......

我认为这样不违反oop的精神,private、public等只对派生类和外部应用
有效,我们总不至于要
class A
{
private:
...

public:
...

firend A; // ?!
};
应该对本类没有限制。

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.146.3]
发信人: crazyjava (骄傲的中国人), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Mon Jul 19 14:12:22 1999), 站内信件

【 在 vcc (vcc) 的大作中提到: 】
: 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: : 【 在 Ericuo (帅呆了) 的大作中提到: 】
: :    .......

:    .......

thanx

但是你还没有回答我那个a1能够直接使用a2的
private data的问题,这样做法不违反OOP吗?

--
孤身走我路...
其实,路,两个人一起走比一个人要好。
email: [email protected]

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 139.87.93.207]
发信人: Ericuo (帅呆了), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易 BBS (Mon Jul 19 17:46:12 1999), 转信


C++是一种并不完善的纯OOP语言,有很多地方不妥的

【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: 【 在 vcc (vcc) 的大作中提到: 】
: : 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: : 
: :    .......

: thanx

: 但是你还没有回答我那个a1能够直接使用a2的
: private data的问题,这样做法不违反OOP吗?


--
※ 来源:.网易 BBS bbs.netease.com.[FROM: 210.75.42.130]
发信人: Ericuo (帅呆了), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易 BBS (Mon Jul 19 17:46:58 1999), 转信


纯OOP是指只有类的语言吧


【 在 nxin (角虎) 的大作中提到: 】
: 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: : 【 在 Ericuo (帅呆了) 的大作中提到: 】
: :    .......

: C++中的private保护是基于类的,类A的成员函数可以访问所有类A对象
: 的private成员变量,编译时没有办法知道所访问的对象是否是当前对象。
: 你说的OOP概念不错,但C++不是纯面向对象语言,不少地方打破了界限,
: 这是继承C的结果。
: 纯面向对象语言例如smalltalk中不允许直接访问成员变量,象
: a.m_iData这种写法语法上就是不支持的,要想访问需要写个函数
: int A::getdata(){return m_iData;}
: 用a.getdata()的方式访问,这样就保证了只有成员函数才能访问自己
: 的对象。但是不支持a.m_iData的写法在C++中是不可想象的。


--
※ 来源:.网易 BBS bbs.netease.com.[FROM: 210.75.42.130]
发信人: crazyjava (骄傲的中国人), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Mon Jul 19 18:14:28 1999), 站内信件

【 在 Ericuo (帅呆了) 的大作中提到: 】
: C++是一种并不完善的纯OOP语言,有很多地方不妥的
: 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: : thanx
: : 但是你还没有回答我那个a1能够直接使用a2的
:    .......

不错,C++有很多地方不妥。

但是我在JAVA上也测试过,结果一样。不明白JAVA为什么
也没有改进这方面,还是有其它原因?

--
孤身走我路...
其实,路,两个人一起走比一个人要好。
email: [email protected]

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 139.87.93.207]
发信人: vcc (vcc), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Mon Jul 19 18:19:00 1999), 站内信件

【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
:thanx
:但是你还没有回答我那个a1能够直接使用a2的
:private data的问题,这样做法不违反OOP吗?
我认为private只对派生类有效,
显然只要是同类型就可以不受限制。
就象
class A{
...
//firend A; 
};

自己和自己做朋友^-^



--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.146.3]
发信人: Ericuo (帅呆了), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易 BBS (Mon Jul 19 21:44:27 1999), 转信


smalltalk呢?

【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: 【 在 Ericuo (帅呆了) 的大作中提到: 】
: : C++是一种并不完善的纯OOP语言,有很多地方不妥的
: : 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: :    .......

: 不错,C++有很多地方不妥。

: 但是我在JAVA上也测试过,结果一样。不明白JAVA为什么
: 也没有改进这方面,还是有其它原因?


--
※ 来源:.网易 BBS bbs.netease.com.[FROM: 210.75.42.130]
发信人: nxin (角虎), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Tue Jul 20 09:40:14 1999), 站内信件

【 在 Ericuo (帅呆了) 的大作中提到: 】
: smalltalk呢?
: 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: : 不错,C++有很多地方不妥。
: : 但是我在JAVA上也测试过,结果一样。不明白JAVA为什么
:    .......

smalltalk是一种非常好的OOP系统,想深入理解OOP必须学习smalltalk,
C++只是实现了部分OOP思想的语言,是语言,不是系统,这有很大差别。语言
中的类是静态的,系统中的类是动态的,类也是对象。

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 203.196.1.251]
发信人: crazyjava (骄傲的中国人), 信区: C
标  题: Re: 讨论一个小问题 -- private
发信站: 网易虚拟社区 (Tue Jul 20 16:25:57 1999), 站内信件

【 在 nxin (角虎) 的大作中提到: 】
: 【 在 Ericuo (帅呆了) 的大作中提到: 】
: : smalltalk呢?
: : 【 在 crazyjava (骄傲的中国人) 的大作中提到: 】
: :    .......
:    .......

近来看了比较多的OOP理论上的书籍,所以与语言有点
混淆了 :P

--
孤身走我路...
其实,路,两个人一起走比一个人要好。
email: [email protected]

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 139.87.93.201]

[关闭][返回]