| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3246 人关注过本帖
标题:C++面向对象编程:把主函数封装在类中。
只看楼主 加入收藏
gameboy70949
Rank: 2
等 级:论坛游民
帖 子:6
专家分:25
注 册:2012-2-10
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
C++面向对象编程:把主函数封装在类中。
1、对Java编程了解的同学一定清楚,main方法是“public static void main ()”这样封装在类中,由java虚拟机加载并运行。
2、对MFC编程了解的同学应该会发现在源代码中,恐怕找不到main或者winmain这些函数,据我了解,主函数是被封装在MFC类中。

我现在想面向对象的思想写一个C++程序,而且想学上面两个例子那样,把主函数main()也封装进类里面,如:

程序代码:
#include <string.h>
#include <iostream>
using namespace std;

class HelloWorld{
private:
    char str[50];
public:
    HelloWorld(char const str0[]){
        cout<<"正在执行构造函数。"<<endl;
        strcpy( str, str0 );
    }
    ~HelloWorld(){
        cout<<"正在执行析构函数。"<<endl;
    }
    void say_hello(){
        cout<<str<<endl;
    }
    int main(){
        say_hello();
        return 0;
    }
};
HelloWorld Main("Hello!!");

当然了,上面这种写法实际是行不通的。我希望能够达到把主函数封装在类中。应该如何编写我的代码呢?

[ 本帖最后由 gameboy70949 于 2013-5-14 23:04 编辑 ]
搜索更多相关主题的帖子: Java 虚拟机 public 函数 封装 
2013-05-14 23:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
1。Java之所以这么做,是因为语言设计上的缺陷。main函数是非面向对象的,而Java又“一切只能是对象”
2。主函数是被封装在MFC中,但不是封装在MFC类中。MFC之所以隐藏主函数,是因为它要在主函数中初始化很多运行时环境
3。即使你能这么做,或者即使你用的就是Java,严格来说这也不是“面向对象”,仅仅只是封装在类中而已。如果你认为这就是“面向对象”,那一切语言只要弄个class封装一下,就是“面向对象”了。
2013-05-15 08:37
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:10 
JAVA需要虚拟机,不下载虚拟机无法运行,有没有main入口都一样个人觉得,说白了就是一个比JS,ASP,PHP更高级的脚本语言.

MFC是编译器封装,而不是代码,编译后的代码会主动抛出main入口.也就是说你现在看不到它,但编译器在编译的时候会在程序头上加入入口.并且提供整套正确的运行方式执行你的代码

如果一个程序没有main它无法运行,main代表整个程序从这里开始.如果你封装了它,现在我们假设对方编译你的库,你的库有"门票"但对方没有,程序启动的时候会先启动用户方的而不是你的,因为你是被使用者.用户方没有"门票"系统不让通过.

你也可以做出封装,除非你自己去做个编译器,编译方法由你决定.
2013-05-15 10:25
gameboy70949
Rank: 2
等 级:论坛游民
帖 子:6
专家分:25
注 册:2012-2-10
收藏
得分:0 
哦,明白。
2013-05-15 12:54
快速回复:C++面向对象编程:把主函数封装在类中。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018464 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved