一个类的成员不仅只能是int、string等类型,还可以时自定义类型,如结构体、类等。本节介绍一个类的成员是另一个类。 本类的大体构架: person类中有个成员属性是phone,而phone是另一个独立的类。
#include<iostream> #include<string> using namespace std; class phone { public: string m_type; phone(string type) : m_type(type) { } }; class person { public: int m_age; phone m_phone; //m_phone(type)相当于phone m_phone = type; //这是类构造函数调用形式的“隐式转换法” //相当于phone m_phone(type); person(int age, string type) :m_age(age), m_phone(type) { } }; int main() { person p(18, "apple"); cout << p.m_age << endl << p.m_phone.m_type << endl; system("pause"); return 0; }先创建一个phone类,再创建一个person类,其中有个phone类型的成员。
注意,phone类要在person类前面创建,否则编译器识别不了关键字phone。如果非要先定义person类,需要在使用phone关键字声明一下phone类,就像函数声明那样。格式如下: clsss phone;但在本例中,不能这样先声明后定义。 因为声明过后,编译器虽然知道了关键字phone是一个类,但并不知道这个类有哪些成员,所以在person类中的构造函数没法用字符串type初始化成员m_Phone。 运行结果: