让我们有两段代码。每段代码都有两个类,这些类非常相似。唯一的区别是定义类B
的构造函数。定义构造函数的两种不同方式
第一程序:
using namespace std;
class A
{
public:
A(int x) : val(x) { cout << val << endl; }
private:
int val;
};
class B
{
public:
B(int x) { instanceA(x); }
private:
A instanceA;
};
int main()
{
B instanceB(5);
}
第二方案:
using namespace std;
class A
{
public:
A(int x) : val(x) { cout << val << endl; }
private:
int val;
};
class B
{
public:
B(int x) : instanceA(x) { }
private:
A instanceA;
};
int main()
{
B instanceB(5);
}
B
类的在第一节目中的构造被定义为:
B(int x) { instanceA(x) }
B
类的在构造第二个程序定义为:
B(int x) : instanceA(x) { }
第一个代码不工作,第二个是工作 - 什么定义构造函数在全球在这种情况下,第一和第二种方式也不同?
EDIT:代替B(int x) { instanceA(x); }
需要是B(int x) { instanceA = A(x) }
'B(INT X){instanceA = A(X)}' - 这不同于上述 –
@EdHeal固定,遗憾 – scarface
使用的代码:VAL(X){ } – Exceptyon