关于面对对象设计的几个问题?

hydralisk 2003-10-15 11:32:47
关于面对对象设计的几个问题?
1. 什么时候设计成类,什么时候设计成函数?
2. 什么时候用静态函数?
3. 什么时候生成对象,调用其中函数,什么时候直接用类中的函数?
比如:
Class A
{
int fun_1();
static int fun_2();
int m_vA;
}

main()
{
int iA;
A *pa=new A;
iA=pa->fun_1();和iA=pa->fun_2();和iA=A::fun_1();的区别
}

谢谢 不知我说清楚了没有
...全文
28 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
robbie24 2003-10-18
  • 打赏
  • 举报
回复
static member function 是没有装备this指针的,所以...无法操纵data member(static属性的除外)...你的...明白?
hydralisk 2003-10-18
  • 打赏
  • 举报
回复
ok 结贴
Jinhao 2003-10-16
  • 打赏
  • 举报
回复
是的,朋友你的理解是正确的
hydralisk 2003-10-16
  • 打赏
  • 举报
回复
看了一下书 看来我的理解还是有问题 INSIDE C++ OBJECT MODEL说类中的函数都是在类外的 所以不论是一个类的多少个对象 它的函数都是一个副本 非静态和静态在内存中都是一个
hydralisk 2003-10-16
  • 打赏
  • 举报
回复
不好意思 写的时候犯晕 忘写PUBLIC了 呵呵 我看了 INSIDE C++ OBJECT MODEL 书上说静态函数是在类的范围内就可以起作用 一个没有任何对象的类就可以调用 这样它就是唯一的 效率比较高吧 我以前也没有用过静态函数 是这两天看一个程序 它在对数据库操作时大量的使用了静态函数 我才想在这里和大家讨论一下 我想由于要平凡的使用数据库 所以用静态函数这样 内存中只有一个静态函数 速度快 如果是非静态函数的化 由于不断生成对象要建立函数副本 这样速度就慢一些 请大家讨论
Jinhao 2003-10-16
  • 打赏
  • 举报
回复
写错了,应该是 iA=A::fun_2();
Wolf0403 2003-10-16
  • 打赏
  • 举报
回复
鸡丁兄:
main()
{
int iA;
A *pa=new A;
iA=pa->fun_1();
iA=A::fun_1(); //错误:必须从实例调用非静态方法。
}
楼主:
1、C++ 基本理念:用类表示概念。如果乐意,可以用类了表示函数,呵呵。当然,类更多的是包含了数据和行为的概念集合,而函数不包含数据。
2、个人感觉没太大必要,除非是特殊的生成类对象的方法(譬如 singleton 模式里面的。。)
3、非 static 函数必须通过对象调用。static 函数只能直接调用。
Jinhao 2003-10-16
  • 打赏
  • 举报
回复
你的问题我不会回答,我只会第二个问题
错了
Class A
{
public: //这个不能掉
int fun_1();
static int fun_2(A a); //这是静态
private:
int m_vA;
static int m_vB;
}

main()
{
int iA;
A *pa=new A;
iA=pa->fun_1(); //非静态的调用方法
iA=A::fun_1(); //静态的调用方法
}

在静态成员函数的实现中不能直接引用类中说明的非静态成员
int A::fun_2(A a)
{
cout<<a.m_vA<<endl;//访问非静态成员
cout<<m_vB<<endl;//访问静态成员
return 0;
}

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧