C++ 有参构造 无参构造 拷贝构造 以及参数化列表 成员对象之间的执行关系
生活随笔
收集整理的這篇文章主要介紹了
C++ 有参构造 无参构造 拷贝构造 以及参数化列表 成员对象之间的执行关系
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include <iostream>
#include <string>
using namespace std;
class Phone {
public:string m_pname;/*Phone() {cout << "無參構(gòu)造" << endl;m_pname = "vivo";}*/Phone(const Phone &p) {cout << "拷貝構(gòu)造" << endl;m_pname = p.m_pname;}Phone(string pname) {cout << "有參構(gòu)造" << endl;m_pname = pname;}
};
//Phone p1;
class Person {public:string m_name;Phone m_phone = {"s"};Person(){/*m_phone = Phone("ss")*/;}
};
//class Person {
//public:
// string m_name;
// Phone m_phone;
// Person():m_phone("ss") {
// /*m_phone = Phone("ss")*/;
// }
//};
//class Person {
//public:
// string m_name;
// Phone m_phone;
// Person() : m_phone(p1) {
//
// }
//};int main()
{Person p;return 0;
}
Person對象構(gòu)造之前,先將Person類的成員對象構(gòu)造出來,也就是說 正式執(zhí)行 Person 構(gòu)造函數(shù)體 { } 之前, Person類的成員對象就要構(gòu)造出來,
Phone m_phone; 這句話就要求必須有無參構(gòu)造函數(shù), 否則無法創(chuàng)建m_phone這個(gè)對象, 如果確實(shí)沒有無參構(gòu)造,那么在Person類的初始化列表里面指定構(gòu)造方式也可以。 這就是所謂的 沒有無參構(gòu)造的成員對象要放在初始化列表里面執(zhí)行,
這句話其實(shí)是片面的。比如 Phone m_phone = {“s”}; 這樣寫的話,就算沒有無參構(gòu)造,也可以不用再初始化列表初始化了。
Phone m_phone; 這句話就要求必須有無參構(gòu)造函數(shù), 否則無法創(chuàng)建m_phone這個(gè)對象, 如果確實(shí)沒有無參構(gòu)造,那么在Person類的初始化列表里面指定構(gòu)造方式也可以。 這就是所謂的 沒有無參構(gòu)造的成員對象要放在初始化列表里面執(zhí)行,
這句話其實(shí)是片面的。比如 Phone m_phone = {“s”}; 這樣寫的話,就算沒有無參構(gòu)造,也可以不用再初始化列表初始化了。
總結(jié)
以上是生活随笔為你收集整理的C++ 有参构造 无参构造 拷贝构造 以及参数化列表 成员对象之间的执行关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 骂老马的进!!!!!!!
- 下一篇: C++ this指针初步使用,与链式编程