C++与C语言的区别 下

2009-02-03 08:15:14

六、函数重载
    在C++中,允许有相同的函数名,不过它们的参数类型不能完全相同,这样这些函数就可以相互区别开来。而这在C语言中是不允许的。
    1.参数个数不同
        #include iostream.h
        void a(int,int);
        void a(int);
        int main()
        {
            a(5);
            a(6,7);
            return 0;
        }
        void a(int i)
        {
            cout<        } 
        void a(int i,int j)
        {
            cout<        }
    2.参数格式不同
        #include iostream.h
        void a(int,int);
        void a(int,float);
        int main()
        {
            a(5,6);
            a(6,7.0);
            return 0;
        }
        void a(int i,int j)
        {
            cout<        } 
        void a(int i,float j)
        {
            cout<        }
七、变量作用域
        C++语言中,允许变量定义语句在程序中的任何地方,只要在是使用它之前就可以;而C语言中,必须要在函数开头部分。而且C++允许重复定义变量,C语言也是做不到这一点的。看下面的程序:
        #include iostream.h
        int a;
        int main()
        {
            cin>>a;
            for(int i=1;i<=10;i++)        //C语言中,不允许在这里定义变量
            {
                static int a=0;           //C语言中,同一函数块,不允许有同名变量
                a+=i;
                cout<<::a<<   <            }
            return 0;
        }
八、new和delete运算符
    在C++语言中,仍然支持malloc()和free()来分配和释放内存,同时增加了new和delete来管理内存。
    1.为固定大小的数组分配内存
        #include iostream.h
        int main()
        {
            int *birthday=new int[3];
            birthday[0]=6;
            birthday[1]=24;
            birthday[2]=1940;
            cout<                <            delete [] birthday;      //注意这儿
            return 0;
        }
     在删除数组时,delete运算符后要有一对方括号。
     2.为动态数组分配内存
         #include iostream.h
         #include stdlib.h
         int main()
         {
             int size;
             cin>>size;
             int *array=new int[size];
             for(int i=0;i                 array[i]=rand();
             for(i=0;i                 cout<<'\n'<             delete [] array;
             return 0;
         }
九、引用型变量
    在C++中,引用是一个经常使用的概念。引用型变量是其他变量的一个别名,我们可以认为他们只是名字不相同,其他都是相同的。
    1.引用是一个别名
        C++中的引用是其他变量的别名。声明一个引用型变量,需要给他一个初始化值,在变量的生存周期内,该值不会改变。& 运算符定义了一个引用型变量:
            int a;
            int& b=a;
        先声明一个名为a的变量,它还有一个别名b。我们可以认为是一个人,有一个真名,一个外号,以后不管是喊他a还是b,都是叫他这个人。同样,作为变量,以后对这两个标识符操作都会产生相同的效果。
            #include iostream.h
            int main()
            {
                int a=123;
                int& b=a;
                cout<                a++;
                cout<                b++;
                cout<                return 0;
            }
    2.引用的初始化
        和指针不同,引用变量的值不可改变。引用作为真实对象的别名,必须进行初始化,除非满足下列条件之一:
        (1) 引用变量被声明为外部的,它可以在任何地方初始化
        (2) 引用变量作为类的成员,在构造函数里对它进行初始化
        (3) 引用变量作为函数声明的形参,在函数调用时,用调用者的实参来进行初始化
    3.作为函数形参的引用
        引用常常被用作函数的形参。以引用代替拷贝作为形参的优点:
            引用避免了传递大型数据结构带来的额外开销
            引用无须象指针那样需要使用*和->等运算符
            #include iostream.h
            void func1(s p);
            void func2(s& p);
            struct s
            {
                int n;
                char text[10];
            };
            int main()
            {
                static s str={123,China};
                func1(str);
                func2(str);
                return 0;
            }
            void func1(s p)
            {
                cout<                 cout<             }
            void func2(s& p)
            {
                cout<                 cout<             }
        从表面上看,这两个函数没有明显区别,不过他们所花的时间却有很大差异,func2()函数所用的时间开销会比func2()函数少很多。它们还有一个差别,如果程序递归func1(),随着递归的深入,会因为栈的耗尽而崩溃,但func2()没有这样的担忧。
    4.以引用方式调用
        当函数把引用作为参数传递给另一个函数时,被调用函数将直接对参数在调用者中的拷贝进行操作,而不是产生一个局部的拷贝(传递变量本身是这样的)。这就称为以引用方式调用。把参数的值传递到被调用函数内部的拷贝中则称为以传值方式调用。
            #include iostream.h
            void display(const Date&,const char*);
            void swapper(Date&,Date&);
            struct Date
            {
                int month,day,year;
            };
            int main()
            {
                static Date now={2,23,90};
                static Date then={9,10,60};
                display(now,Now: );
                display(then,Then: );
                swapper(now,then);
                display(now,Now: );
                display(then,Then: );
                return 0;
            }
            void swapper(Date& dt1,Date& dt2)
            {
                Date save;
                save=dt1;
                dt1=dt2;
                dt2=save;
            }
            void display(const Date& dt,const char *s)
            {
                cout<                cout<             }
    5.以引用作为返回值
        #include iostream.h
        struct Date
        {
            int month,day,year;
        };
        Date birthdays[]=
        {
            {12,12,60};
            {10,25,85};
            {5,20,73};
        };
        const Date& getdate(int n)
        {
            return birthdays[n-1];
        }
        int main()
        {
            int dt=1;
            while(dt!=0)
            {
                cout<                cin>>dt;
                if(dt>0 && dt<4)
                {
                    const Date& bd=getdate(dt);
                    cout<                }
            }
            return 0;
        }
    程序都很简单,就不讲解了。

推荐(0)
收藏
分享至: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 添加到饭否 QQ书签 POCO网摘 Digbuzz我挖网 

c++入门笔记

2009-02-03 08:07:26

推荐使用codeblocks开发c++.

很不错的开发工具,大家需要的话,可以google一下。

/**

*  第一个c++程序

*/

//-------------------------------------------------

#include

using namespace std;

int main()
{
    char name[20];
    cout << "what is your name?" << endl;
    cin >> name;
    cout << "Hello " ;
    cout << name << endl;
    return 0;
}

//-------------------------------------------------

上面是第一个c++程序。

他会问你的名字,然后说你好。

大家可以在任意一个c++ 的ide下输入这段代码。

这个例程在codeblocks下测试通过。

http://www.cplusplus.com/files/tutorial.pdf

这里是一本很好的c++入门书籍。

推荐(0)
收藏
分享至: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 添加到饭否 QQ书签 POCO网摘 Digbuzz我挖网 

doxygen快速入门

2009-01-22 11:09:05

doxygen是一个功能很强大的文档生成工具.

闲话少续.看看怎么用吧.

1.准备你的源码.

我写的php,

/**
* 核心类
* @author netroby
* @version 1406
*/

class hi {
/**
* 说你好
*
* 用法
*
* $this->sayHello('Netroby');
*
* 返回结果 hello Netroby;
*
* @param $who (string) 字符串
* @return 对某人说你好
*/
public function sayHello($who) {
echo "hello ",$who;
}

}
?>

php下面可以用javadoc风格的注释,看起来比较舒服.

2.运行doxywizard

填好设置信息,填仔细点.

部用看什么文档的.英文水平稍微好点的,就可以轻松配置.

3.保存配置文件

4.运行(doxywizard第三个选项卡就是的)

看看效果吧.

推荐(0)
收藏
分享至: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 添加到饭否 QQ书签 POCO网摘 Digbuzz我挖网 
得到OpenID
使用OpenID提供商
35OpenID 35OpenID MyOpenID MyOpenID Flickr Flickr
Google Google Yahoo Yahoo! AOL AOL
Blogger Blogger LiveJournal LiveJournal Verisign Verisign
ClaimID ClaimID Technorati Technorati Vidoop Vidoop
OpenID OpenID 帮助
您还没有登录,请登录后继续操作。
提示:您必需打开Cookie才能使用本系统
请输入您的 OpenID OpenID 登录:
例如:http://yourname.openid.35.com
close