首页 > 代码库 > 引用成员变量 和 类对象做成员变量
引用成员变量 和 类对象做成员变量
注意:
1. 引用成员变量 必须在构造函数的初始化列表中进行初始化
2. 引用成员变量 并不为这个变量新辟空间;类对象做成员变量则是要对其新辟一段空间的。
如下代码中,使用date1做参数初始化person_ref和person_obj。person_ref的birth字段date1为同一个地址空间,而person_obj的birth字段则是新辟了一段空间。
#include <iostream>using namespace std;class Date{ int month, year;public: Date(int m, int y):month(m), year(y){};};class Person_ref{ Date &birth; string name;public: Person_ref::Person_ref(Date &b, string n): name(n), birth(b){}; Date *GetBirth(){return &birth;} Date &GetBirth_(){return birth;}};class Person_obj{ Date birth; string name;public: Person_obj::Person_obj(Date b, string n): name(n), birth(b){}; Date *GetBirth(){return &birth;} Date &GetBirth_(){return birth;}};int main(){ Date date1(4, 1989), date2(5, 1990); Person_ref person_ref(date1, "Elva"); //person.birth字段成为为date1这段空间的别名 Person_obj person_obj(date1, "Elva"); //为person_obj.birth字段重辟一段空间,然后拿date1的值对这段空间进行值赋值 Date *pd = person_ref.GetBirth(); Date newDate = person_ref.GetBirth_(); //为newDate重辟一段空间,然后取person_ref.birth中数据对其进行值赋值 Date &refDate = person_ref.GetBirth_(); //refdate成为person_ref.birth, date1这段空间的新别称 cout << "date1: " << &date1 <<endl; cout << "person_ref.birth:" << person_ref.GetBirth()<<endl; cout << "person_obj.birth:" << person_obj.GetBirth()<<endl; cout << "refDate: " << &refDate <<endl; cout << "tmpDate: " << &newDate <<endl; refDate = date2; //对date1,person_ref.birth,refDate这段空间进行"值"赋值 cout << "refDate after revalue: " << &refDate <<endl; return 1;}
今天还忙着别的,先这么记录下来,空暇下来了在再补充。
打印地址信息:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。