以Son中Person成员对象为例,为例方便,全部设置权限为public;
#include<iostream>
#include <string>
using namespace std;
class Person
{
public:
int m_A;
Person() { m_A = 10; cout << "Person普通构造的调用" << endl; }
Person(int a) :m_A(a) { cout << "Person有参构造的调用" << endl; }
Person(Person& p) :m_A(p.m_A) { cout << "Person拷贝构造的调用" << endl; }
~Person() { cout << "Person析构函数的调用" << endl; }
};
class Son
{
public:
Person m_P;
int m_B;
Son() { m_P.m_A = 10; m_B = 10; cout << "Son普通构造的调用" << endl; }
Son(int b) :m_B(b) { cout << "Son的有参,Person的普通构造" << endl; }
Son(int a, int b):m_P(a), m_B(b) { cout << "Son的有参,Person的有参构造" << endl; }
Son(Person& p, int b) :m_P(p), m_B(b) { cout << "Son的有参,Person的拷贝" <<endl; }
// Son(Son& s) :m_B(s.m_B), m_P(s.m_P.m_A) { cout << "Son的拷贝,Person的有参构造" << endl; }
Son(Son& s) :m_B(s.m_B), m_P(s.m_P) { cout << "Son的拷贝,Person的拷贝构造" << endl; }//只能实现一个拷贝
~Son() { cout << "Son析构函数的调用" << endl; }
};
int main()
{
Son s1(10);
Son s2(s1);
return 0;
}
还有请问一下如何把初始化列表中的内容写到函数里面,以Son的有参,Person的拷贝为例。仅仅包含Person的一个拷贝,Son的一个有参,传入的参数不算。