行业知识
【C++】类和对象(下)
2026-10-24 19:35:43
来源:互联网转载
���录
一,再谈构造函数
1,构造函数体赋值
2,初始化列表
3,explicit 关键字
二,static 成员
1,概念
2,特性
三,友元
1,友元函数
2,友元类
四,内部类
五,匿名对象
六,拷贝对象时的一些编译器优化
一,再谈构造函数
1,构造函数体赋值
在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。
class Date{public:Date(int year, int month, int day) { _year = year; _month = month; _day = day; }private:int _year;int _month;int _day;}; 虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量 的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始 化一次,而构造函数体内可以多次赋值。
2,初始化列表
初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟 一个放在括号中的初始值或表达式。
class Date{public:Date(int year, int month, int day) : _year(year) , _month(month) , _day(day) {}private:int _year;int _month;int _day;}; 【注意】
1,每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)
2,类中包含以下成员,必须放在初始化列表位置进行初始化:
引用成员变量
const 成员变量
自定义类型成员(且该类没有默认构造函数时)
class A{public:A(int a):_a(a){}private:int _a;};class B{public:B(int a = 10, int ref = 10):_aobj(a), _ref(ref), _n(10){}private:A _aobj; // 没有默认构造函数int& _ref; // 引用const int _n; // const };int main(){B d;return 0;} 3,尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量, 一定会先使用初始化列表初始化。
class Time{public:Time(int hour = 0):_hour(hour){cout
上一篇:怎么进到阿里云的服务器?
下一篇:物联网服务器怎么设置无线?