这个和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++中默认都是不具有多态性的