快速业务通道

C/C++学习手札(一)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

对比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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号