这个和java中的类类似, 仅仅是写法上有些区别, 以及类的默认特性上有些区别.
写法上的区别, 同时写出java和c++的类:
MyClass.java
public class MyClass { private char mChar; private boolean mBool; private byte mByte; priavate short mShort; private int mInt; priavate long mLong; priavate float mFloat; priavate double mDouble; public MyClass() { } public MyClass(char c, boolean bool, byte b, short s, int i, long l, float f, double d) { mChar = c; mBool = bool; mByte = b; mShort = s; mInt = i; mLong = l; mFloat = f; mDouble =d; } // getter and setters就省略了 }
c++要分为类的声明和类的定义
Test.h
#ifndef TEST_H_ #define TEEST_H_ class Test { private: // 只需要写一个private, 下面的就全是private了 char m_char; bool m_bool; char m_byte; // 用char来表示byte, 因为char在c++中也是占一个字节 short m_short; int m_int; long m_long; float m_float; double m_double; public: // 只需要写一个public, 下面的就全是public了 Test(); Test(char c, bool bl, char b, short s, int i, long l, float f, double d); // getter and setters } #endif
Test.cpp
Test::Test() : m_char(0) , m_bool(false) , m_byte(0) , m_short(0) , m_int(0) , m_long(0) , m_float(0.0f) , m_double(0.0) { } Test::Test(char c, bool bl, char b, short s, int i, long l, float f, double d) { m_char = c; m_bool = bl; m_byte = b; m_short = s; m_int = i; m_long = l; m_float = f; m_double = d; } void Test::setChar(char c) { m_char = c; } char Test::getChar() { return m_char; } // 其它getter and setters就省略了
默认特性上的区别:
(1)java的所有类默认都继承自Object, 而c++默认是不继承任何类
(2)java中默认会为所有的成员变量赋默认初值, 而c++不会, 必须通过初始化列表来手动初始化初值, 否则将是一个未定义的值
(3)java中的所有方法默认都是具有多态性的, 而c++中默认都是不具有多态性的