初始C++对象
本人是一个php程序员,去年由于工作机会使用过一点C语言。由于以前使用惯了php这种弱类型语言,在回头来使用C这种强类型的语言,项目期间也是各种纠结不适应。一个同事建议我使用C++来开发它,C++可以使用标准库,而使用C语言所有的东西几乎都要自己开发来写,做一个用户管理要自己来实现链表,就这些方面来看php这种高级语言相比C语言可以解放程序员更多时间去做其他事情。你可以把自己的业务逻辑更完善或者其他的相关的事情。去年年末到新公司,主要是做游戏,主要用C++做服务端,就决定花一些精力来学习C++,最近也看了一点经典的《C++Primer》,就动手写了一个简单的C++的类!
Printer类:
#include <iostream> #include <string> using namespace std; class Printer{ public: string m_msg; Printer(); void setMsg(string str); void showMSg(); }; int main(){ string msg("Hello Wolrd!"); Printer p = Printer(); p.setMsg(msg); p.showMSg(); return 0; } Printer::Printer(){ cout << "Welcome to Printer!" <<endl; } void Printer::setMsg(string str){ m_msg = str; } void Printer::showMSg(){ cout << m_msg << endl; }
这个简单的类里面涉及到成员变量和成员函数,其实C++面向对象就这点和php相比还是很大的。
先说最重要的一点吧,成员变量的操作。在php中,如果我要对一个类的成员进行操作,一般我们会使用”$this”关键字来调用操作的。但是在C++里面,你是可以直接对其操作的,例如上面setMsg函数赋值时,就是直接使用的“m_msg = str;”.所以在声明类的成员时,最好对其加上前缀或者后缀进行表示,否则,你就会可能和你在外部声明的变量重名了,使用起来就会很混乱了。
其实关于访问控制上面,php默认的是public而C++默认的是private。
还有一个就是关于变量实例时,我感觉如果你最初是一个php程序员之后来接触C++也是会可能遇到的问题。php在实例化类时,我们会使用new关键字,例如我要实例一个上面的Printer类,写法是这样的“$p = new Printer;”,但是C++里面如果你要也是使用new关键字的话,如”Printer p = new Printer;”,编译器会报错的。因为new关键字是在堆里面申请内存空间的,所以此时返回的指针类型的,此时就是应该把类型做类似的声明“Printer *p = new Printer;”.当然如果你不需要使用指针,也可以这样根据构造函数来实例化对象”Printer p = Printer();”.
基于这些,在进行C++开发时,就需要注意变量的命名规范来避免冲突。
近期评论