小工具知识网

当前位置: 首页 > 行业知识 > 【C++】类和对象(下)

行业知识

【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 

上一篇:怎么进到阿里云的服务器?

下一篇:物联网服务器怎么设置无线?