当前位置: 首页 > news >正文

数码网站建设图片中国做网站的公司排名

数码网站建设图片,中国做网站的公司排名,Wordpress订阅栏目,重庆政府采购平台官网目录 1. 再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.3 explicit关键字 2. stastic成员 2.1 概念 2.2 特性 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date…

目录

1. 再谈构造函数

1.1 构造函数体赋值

1.2 初始化列表

1.3 explicit关键字

2. stastic成员

2.1 概念

2.2 特性


1. 再谈构造函数

1.1 构造函数体赋值

在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。
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 初始化列表

初始化列表:以一个 冒号开始 ,接着是一个以 逗号分隔的数据成员列表 ,每个 " 成员变量 " 后面跟
一个 放在括号中的初始值或表达式。
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, int ref):_aobj(a),_ref(ref),_n(10){}
private:A _aobj;       // 没有默认构造函数int& _ref;     // 引用const int _n;  // const 
};
3. 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,
一定会先使用初始化列表初始化。
class Time
{
public:Time(int hour = 0):_hour(hour){cout << "Time()" << endl;}
private:int _hour;
};
class Date
{
public:Date(int day){}
private:int _day;Time _t;
};
int main()
{Date d(1);
}
4. 成员变量 在类中 声明次序 就是其在初始化列表中的 初始化顺序 ,与其在初始化列表中的先后
次序无关
class A
{
public:A(int a):_a1(a),_a2(_a1){}void Print() {cout<<_a1<<" "<<_a2<<endl;}
private:int _a2;int _a1;
};
int main() {A aa(1);aa.Print();
}
A. 输出1  1
B.程序崩溃
C.编译不通过
D.输出1  随机值

答案是: D

1.3 explicit关键字

构造函数不仅可以构造与初始化对象, 对于单个参数或者除第一个参数无默认值其余均有默认值
的构造函数,还具有类型转换的作用
class Date
{
public:// 1. 单参构造函数,没有使用explicit修饰,具有类型转换作用// explicit修饰构造函数,禁止类型转换---explicit去掉之后,代码可以通过编译explicit Date(int year):_year(year){}/*// 2. 虽然有多个参数,但是创建对象时后两个参数可以不传递,没有使用explicit修饰,具
有类型转换作用// explicit修饰构造函数,禁止类型转换explicit Date(int year, int month = 1, int day = 1): _year(year), _month(month), _day(day){}*/Date& operator=(const Date& d){if (this != &d){_year = d._year;_month = d._month;_day = d._day;}return *this;}
private:int _year;int _month;int _day;
};
void Test()
{Date d1(2023);// 用一个整形变量给日期类型对象赋值// 实际编译器背后会用2023构造一个无名对象,最后用无名对象给d1对象进行赋值d1 = 2023;// 将1屏蔽掉,2放开时则编译失败,因为explicit修饰构造函数,禁止了单参构造函数类型转
换的作用
}
上述代码可读性不是很好, explicit 修饰构造函数,将会禁止构造函数的隐式转换

2. stastic成员

2.1 概念

声明为 static 的类成员 称为 类的静态成员 ,用 static 修饰的 成员变量 ,称之为 静态成员变量 ;用
static 修饰 成员函数 ,称之为 静态成员函数 静态成员变量一定要在类外进行初始化
面试题:实现一个类,计算程序中创建出了多少个类对象。
class A
{
public:
A() { ++_scount; }
A(const A& t) { ++_scount; }
~A() { --_scount; }
static int GetACount() { return _scount; }
private:
static int _scount;
};
int A::_scount = 0;
void TestA()
{
cout << A::GetACount() << endl;
A a1, a2;
A a3(a1);
cout << A::GetACount() << endl;
}

2.2 特性

1. 静态成员 所有类对象所共享 ,不属于某个具体的对象,存放在静态区
2. 静态成员变量 必须在 类外定义 ,定义时不添加 static 关键字,类中只是声明
3. 类静态成员即可用 类名 :: 静态成员 或者 对象 . 静态成员 来访问
4. 静态成员函数 没有 隐藏的 this 指针 ,不能访问任何非静态成员
5. 静态成员也是类的成员,受 public protected private 访问限定符的限制

http://www.mmbaike.com/news/93639.html

相关文章:

  • 昆明做网站建设价位嘉兴网站建设方案优化
  • 医院网站建设价值和意义搜狗优化排名
  • 西安学校网站建设哪家好山东百度推广代理商
  • 佛山免费建站公司搜狗网
  • 帮人做网站赚钱吗seo排名优化推广报价
  • 泉州外贸网站建设都有哪些公司购买网站域名
  • wordpress表单烟台seo
  • java 做博客网站网站seo规划
  • 江门网站制作方案定制企业宣传片视频
  • b站推广入口mba智库网络营销师有前途吗
  • 酒店 网站建设 中企动力网站建设优化收费
  • 视频直播平台开发系统优化软件有哪些
  • 做游戏的外包网站最佳磁力吧ciliba搜索引擎
  • 广西网站建设产品优化怎么做谷歌推广
  • 佛山高明网站建设设计磁力搜索引擎哪个好
  • 怎建立自己网站做淘宝客seo 工具推荐
  • 集团公司网站建设方案googleplay官网
  • 网站解决方案模板网络市场调研
  • 网站做APP麻烦吗公司网站设计公司
  • 茅台酒国内营销网络网站内部seo
  • 威海网站建设哪一家软文有哪些发布平台
  • 想通过网站卖自己做的东西网络营销项目
  • 网站蜘蛛抓取推广引流话术
  • 制作和淘宝商城一样网站seo站长教程
  • wordpress xml文件分割器枣庄网络推广seo
  • 政府门户网站建设对策建议外包接单平台
  • 云网站开发百度文库官网首页
  • 个人简历word免费模板seo搜论坛
  • 辽宁建设厅查询网站首页武汉seo 网络推广
  • 郑州企业网站优化怎样推广app别人才愿意下载