由于我对面向对象的编程思想特别特别喜爱,所以,每上手使用一中语言前,我总要看看它有没有类这个概念。有的时候用面向对象开发效率提高不了多少,尽管如此,我还是喜欢用,因为它让我觉得整齐,整洁。
构造函数怎么来的?
最早的时候我们用自己写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++的继承与多态再另一篇文章中讲