C++之类的特性(一)

来源:互联网 发布:ubuntu ftp上传文件 编辑:程序博客网 时间:2024/06/18 17:57

由于我对面向对象的编程思想特别特别喜爱,所以,每上手使用一中语言前,我总要看看它有没有类这个概念。有的时候用面向对象开发效率提高不了多少,尽管如此,我还是喜欢用,因为它让我觉得整齐,整洁。

构造函数怎么来的?

最早的时候我们用自己写init,自己调用init来构造对象的成员变量,但是久而久之,这种繁琐的工作谁还喜欢做???难道不能再省事点吗?

#include <iostream>using namespace std;class point{public:    int  x;    int  y;    void init(){        x = 2;        y = 3;    }    void output(){        cout<<x<<endl<<y<<endl;    }};int main() {    point pt;    //init()函数用于变量的初始化,但是有的时候我们会忘记调用或者懒得自己调用init。    //那么,问题来了,有没有一种方法能让我们在创建对象的时候就对成员变量初始化呢??    //答案:就是偷懒。让系统自动给我们调用。    pt.init();    pt.output();    return 0;}

这种繁琐的工作谁还喜欢做???难道不能再省事点吗?让系统帮我门调用。所以C++规定构造函数的名字与类名要相同,而且还不能有返回值。

#include <iostream>using namespace std;class point{public:    int  x;    int  y;    //删掉init()    point(){        x = 4;        y = 3;    }    void output(){        cout<<x<<endl<<y<<endl;    }};int main() {    point pt;    //删掉pt.init()。从此系统做这种破事    pt.output();    return 0;}

构造函数到此为止

析构函数?

到目前为止析构函数我还未曾用过,待到用时再补充进来。除开文件操作能用到析构函数来关闭,除此之外,我还没见过。

函数的重载

定义:函数的参数类型不同或者参数个数不同才叫函数的重载。
我希望在生成pt对象时,根据用户输入的x,y构造。怎么解决?重载
重载在C里面是不允许的,但是在C++中就是合法的。说C++比C好,我觉的没有任何问题,为何C和C++的人会争论起来呢??搞不明白。

#include <iostream>using namespace std;class point{public:    int  x;    int  y;    point(){        x = 4;        y = 3;    }    point(int a, int b) {        x = a;        y = b;    }    void output(){        cout<<x<<endl<<y<<endl;    }};int main() {    point pt(3,3);    pt.output();    return 0;}

篇幅过长,C++的继承与多态再另一篇文章中讲

原创粉丝点击