是否可以在类定义中创建类的对象,而不使用默认构造函数?
class Vector3D {
public:
Vector3D(int x, int y, int z);
virtual ~Vector3D();
private:
int m_X;
int m_y;
int m_z;
};
class CustomClass {
private:
Vector3D m_Vec(50,50,50); //error
};
答案 0 :(得分:5)
是的,可以这样做,但语法不同:
class Vector3D {
public:
Vector3D(int x, int y, int z);
virtual ~Vector3D();
private:
int m_X;
int m_y;
int m_z;
};
class CustomClass {
private:
Vector3D m_Vec;
public:
CustomClass(): m_Vec(50,50,50) {}
};
答案 1 :(得分:3)
class CustomClass {
private:
Vector3D m_Vec;
public:
CustomClass() : m_Vec(50,50,50) {}
}
答案 2 :(得分:1)
在(现在的)C ++ 11标准中,您实际上可以使用统一初始化和非静态数据成员初始化程序(N2756 ):
class CustomClass {
private:
Vector3D m_Vec{50,50,50};
};
现在,问题是并非所有编译器都支持所有新功能。特别是gcc 4.7是第一个支持这种初始化形式的gcc版本。