南宁网站建设贴吧IT运维人员主要负责哪些任务?

摘要:南宁网站建设贴吧,it运维是做什么的,wordpress的替代,wordpress透明主题下载地址文章目录一、再谈构造函数构造函数体赋值初始化列表explicit关键字二、Static成员引入- 计算类中创建了多少个类对象概念特性静态成员函
南宁网站建设贴吧,it运维是做什么的,wordpress的替代,wordpress透明主题下载地址文章目录一、再谈构造函数构造函数体赋值初始化列表explicit关键字二、Static成员引入- 计算类中创建了多少个类对象概念特性静态成员函数的访问三、友元友元函数友元类四、内部类五、匿名对象六、拷贝对象时的一些编译器优化一、再谈构造函数 构造函数体赋值 在创建对象时编译器通过调用构造函数给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day; };虽然上述构造函数调用之后对象中已经有了一个初始值但是不能将其称为对对象中成员变量 的初始化构造函数体中的语句只能将其称为赋初值而不能称作初始化。 因为初始化只能初始 化一次而构造函数体内可以多次赋值。 class Date { public:Date(int year, int month, int day){_year year;//第一次赋值_year 2001;//第二次赋值_year 2022;//第三次赋值//....._month month;_day day;} private:int _year;int _month;int _day; };初始化列表 初始化列表以一个冒号开始接着是一个以逗号分隔的数据成员列表每个“成员变量”后面跟一个放在括号中的初始值或表达式。 如以下形式 class Date { public:Date(int year, int month, int day):_year(year),_month(month),_day(day){} private:int _year;int _month;int _day; };上述是一个简单的日期类构造函数的初始化列表写法当遇到一个比较复杂的类时初始化列表和函数体内初始化可以混着来 比如栈 class Stack { public:/*Stack(int capacity 4):_a((int*)malloc(sizeof(int)*capacity)) //可以在初始化列表写, _top(0), _capacity(capacity){if (_a nullptr){perror(malloc fail);exit(-1);}}*/// 初始化列表和函数体内初始化可以混着来Stack(int capacity 4): _top(0), _capacity(capacity){_a (int*)malloc(sizeof(int) * capacity); //可以在函数体内写if (_a nullptr){perror(malloc fail);exit(-1);}memset(_a, 0, sizeof(int) * capacity);} private:int* _a; // 声明int _top;int _capacity; };我们知道一个类在没有实例化之前类中的成员变量都只是声明而一旦对象实例化出来则是类的整体定义那对象的每个成员是什么时候定义呢- - - 初始化列表 c的定义没有为什么 而类中有以下三种成员变量必须放在初始化列表位置进行初始化 1. 引用成员变量 我们在学习引用的时候知道引用类型的变量在定义时就必须给其一个初始值。 int a 10; int b a;// 创建时就初始化由于对象的成员是在初始化列表位置定义的所以我们只能在初始化列表定义引用成员变量 class B { public:B(int ref): _ref(ref){} private:int _ref; // 引用 };2. const成员变量 被const修饰的变量也必须在定义时就给其一个初始值。 const int a 10;//correct 创建时就初始化 const int b;//error 创建时未初始化所以也必须使用初始化列表进行初始化。 class B { public:B():_n(10){} private:const int _n; // const 成员变量 };3. 自定义类型成员(且该类没有默认构造函数时) 若一个类中存在类对象时且该类对象的类没有默认构造函数。那么我们在实例化该类对象时就需要传参对其进行初始化所以实例化没有默认构造函数的类对象时必须使用初始化列表对其进行初始化。 在这里再声明一下默认构造函数是指不用传参就可以调用的构造函数  1. 我们不写编译器自动生成的构造函数。
阅读全文