我从2年左右开始做C ++,我说为什么我们需要类中的构造函数而不是结构,以及为什么我们不能在结构中进行构造函数重载...
答案 0 :(得分:9)
为什么我们需要类
中的构造函数
我们没有。
// Perfectly valid
class Foo
{
public:
int x
};
为什么我们不能在结构中进行构造函数重载...
我们可以。
// Look, ma!
struct Bar
{
Bar operator+(const Bar& other);
};
我不知道你在哪里听到这些说法,但肯定不是试图把它弄出来的。
<强> A user-defined type declared with the keyword struct
is a class. 强>
答案 1 :(得分:2)
C ++中struct
和class
之间的唯一区别是可见性;结构默认为public
,而类默认为private
。
然而,一旦超过初始可见度,它们就无法区分。结构是一个具有默认公共可见性的类。
这两段代码具有完全相同的效果。
struct MyClass {
MyClass(int i) : m_i(i) {}
int getI() const { return m_i; }
void setI(int i) { m_i = i; }
private:
int m_i;
};
// is exactly the same as
class MyClass {
public:
MyClass(int i) : m_i(i) {}
int getI() const { return m_i; }
void setI(int i) { m_i = i; }
private:
int m_i;
};
或换句话说
class MyClass {
int m_i;
public:
MyClass(int i) : m_i(i) {}
int getI() const { return m_i; }
};
struct MyClass {
private:
int m_i;
public:
MyClass(int i) : m_i(i) {}
int getI() const { return m_i; }
};