c++中成员初始化列表的问题
2016-05-21 14:30
281 查看
c++中提供了成员列表初始化的方法,我们知道const变量一般是在变量申明的时候就初始化,但是可以通过成员变量的方法动态的改变const变量的值,同时如果类的成员变量是引用,那么我们也必须通过成员列表初始化的方法来初始化,这里我从c++primer里面摘取了成员列表初始化的规则
1,这种格式只能用于构造函数
2,必须使用这种格式来初始化非静态const数据成员
3,必须使用这种格式来初始化引用数据成员
这里我顺便写了一下<<的重载,如果看不懂的话,可以去我之前的一篇文章里面看
代码:
#include<iostream>
using namespace std;
//定义一个类,用于后面定义引用数据成员
class Person{
private:
public:
int age;
//构造函数
Person(){
}
Person(int age){
this->age=age;
}
};
class Student{
private :
Person & person;
const int number;
public :
//构造函数
Student(Person & p,int number):person(p),number(number) {
}
//声明重载<<符号函数
friend ostream & operator<<(ostream & os,const Student student);
};
//实现重载<<符号函数
ostream & operator<<(ostream & os,const Student student){
os<<student.person.age<<":"<<student.number<<endl;
return os;
}
int main(){
Person p(5);
Student student(p,123);
cout<<student;
system("pause");
return 0;
}
1,这种格式只能用于构造函数
2,必须使用这种格式来初始化非静态const数据成员
3,必须使用这种格式来初始化引用数据成员
这里我顺便写了一下<<的重载,如果看不懂的话,可以去我之前的一篇文章里面看
代码:
#include<iostream>
using namespace std;
//定义一个类,用于后面定义引用数据成员
class Person{
private:
public:
int age;
//构造函数
Person(){
}
Person(int age){
this->age=age;
}
};
class Student{
private :
Person & person;
const int number;
public :
//构造函数
Student(Person & p,int number):person(p),number(number) {
}
//声明重载<<符号函数
friend ostream & operator<<(ostream & os,const Student student);
};
//实现重载<<符号函数
ostream & operator<<(ostream & os,const Student student){
os<<student.person.age<<":"<<student.number<<endl;
return os;
}
int main(){
Person p(5);
Student student(p,123);
cout<<student;
system("pause");
return 0;
}
相关文章推荐
- c++学习之运算符重载
- <<的重载
- c++基础学习之深拷贝
- strcpy,memset,memcpy三者之间的根本区别
- c++通过指针实现队列
- c++继承2虚函数
- c++之继承1
- 第六次C++上机作业
- 为什么使用指针比使用对象本身更好?
- C语言动态分配内存
- C语言回调函数 2
- 求最短路径———Dijkstra算法和Floyd算法
- C语言结构体占用空间内存大小解析
- C语言知识体系框架
- 第十三周项目 4 立体类族共有的抽象类
- 第十三周项目 3 形状类族的中的纯虚函数
- 【C语言】用mktime函数获取一个日期是星期几
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- c++11标准——泛型算法
- IOS中的Block在C++中的运用