对比C++的代码:
#include <iostream>
using namespace std;
// 定一个类
class Location {
private:
int x; // 横坐标
int y; // 纵坐标
public:
Location() {
}
Location(int x, int y) {
this->x = x;
this->y = y;
}
int getX() {
return x;
}
void setX(int x) {
this->x = x;
}
int getY() {
return y;
}
void setY(int y) {
this->y = y;
}
};
int main() {
// 声明
Location location;
cout << "输入X坐标:\t";
int x;
cin >> x;
location.setX(x);
cout << "输入Y坐标:\t";
int y;
cin >> y;
location.setY(y);
cout << "X坐标是:\t" << location.getX() << endl;
cout << "Y坐标是:\t" << location.getY() << endl;
// 做倒三角打印
int i;
for (i = 0; i < y; i++) {
cout << i + 1 << "\t";
int j;
for (j = i; j < x; j++) {
cout << "* ";
}
cout << endl;
}
return 0;
}
这里的location就是一个类Location的实例了。同样是赋值操作,对x赋值调用location.setX(x);方法,而内部实现是this->x = x;明显的指针特色->而不是。。这个时候有了私有变量的概念,上面C的代码中的location.x就不合适了。必须使用location.getX()方法输出x的值。仍然让我使用起来不舒服的是cin 与 cout ,为什么在C++面向对象的语言里,却不能以方法的方式实现,还是要使用这样的特定的字符串来(>> 与 <<)控制呢?真的很别扭。特别是在熟悉Java的实现后,你会觉得C++有的时候很别扭。如果我要重新定义一个公有的方法,除了上述的方式,可以这样做:
#include <iostream>
using namespace std;
class Location {
private:
int x, y;
public:
Location() {
}
Location(int x, int y);
int getX() {
return x;
}
void setX(int x) {
this->x = x;
}
int getY() {
return y;
}
void setY(int y) {
this->y = y;
}
};
Location::Location(int x, int y) {
this->x = x;
this->y = y;
}
// 省略
现在类中定义方法Location(int x, int y);然后在类外实现该方法:
Location::Location(int x, int y) {
this->x = x;
this->y = y;
}
上述是一个构造方法,如果要返回值的值类型要定义在方法最前面,如:
int Location::getX() {
return y;
}
我们把打印操作改成函数实现,注意:在C++里如果一个函数被高频度执行,声明为内联函数(inline),可以提高执行效率!
// 声明函数
inline void print(int x, int y);
C++一样没有跳出C的特色,要在主函数调用前声明函数。
/**
* 倒三角打印
*/
inline void print(int x, int y) {
int i;
for (i = 0; i < y; i++) {
cout << i + 1 << "\t";
int j;
for (j = i; j < x; j++) {
cout &l
|