C++ 指针/引用/常规/CONST型成员的初始化与使用
来源:互联网 发布:c语言杨辉直角三角形 编辑:程序博客网 时间:2024/05/22 12:54
-Introduction:类成员函数的参数是 常规/指针/引用 都有什么区别
(1) 参数内容作为常规出现的时候代表了一种拷贝构造函数
(2) 参数内容作为指针出现的时候代表了一种aggregation的关系,使用最为便捷
- 由于指针的灵活性还有不需要立刻赋值的特点,也导致其使用比较频繁
- 这里所说的灵活性是指指针可以随时更换指向的对象
(3) 参数内容作为引用出现的时候代表了一种composition的关系,需要立刻初始化
- 由于具备了不需要拷贝的特点,其高效性导致使用较为频繁
引用型内容初始化的一些注意事项
(1). 当类中数据成员是引用型数据成员,该如何初始化 (int& a)
- 初始化列表。 A(int b) : a(b) 的方式初始化
- 特点:并不具备引用的特点,修改其中一方并不会导致另一方的变化
(2). 当函数参数是引用型数据,该如何代入数据 function(int &c)
- 直接代入。 function(c)
- 特点:有引用的特点,在函数里修改c会导致c的变化
(3). 当函数参数是引用型对象,该如何代入现有对象 function(A& a)
- 直接代入。 function(a)
- 当时看到有function(&d)的用法,以为是引用的时候要加上&号,其实加上&是因为
- d被初始化成了一个常规型对象,但是function定义的是要用指针型对象作为参数
- 因此这里的本意其实是取地址的意思
Const类型有必要单独拿出来说一下,因为摆放的位置很多,不同的位置对应着不同的含义
- 函数类型 - Const 型函数
- 类成员函数拥有const类型,const可以放在两处位置:声明首,与声明末尾
1. const int function(){ ... } 例如const int 这个代表所返回的函数值是const int类型的数据 2. function () const { ... } 这个函数不能修改类中的数据,但是对应的,只有类成员函数才可以这么写,非类成员,常规函数无法 使用这个特性 //注意,这个不只代表"类数据"无法修改,不保证函数形参能不能修改 //也就是说,只在"类函数"末尾加上const,"函数参数"可以修改,"类数据"不能修改
函数参数 - Const 类型的形参 * <-犯过错误这里*
1. function ( const int& u ) 形参中加上const字样,代表函数参数无法修改 也就是以上的int u是无法修改的 (1). 相比于函数类型const只能应用于类函数,这种const类型参数可以应用于类函数+常规函数 (2). 函数调用的时候,填入的内容 : "常量变量" "临时赋值数据" "类对象",请看以下 :(1).A(const int &a) --实现-> A(3) 3被临时标记为常量整数 -->不报错(2).A(const int &a) --实现-> int y = 5 ; A(y) --> 不报错,y被临时转换成const类型(3).A(const string &a) --实现-> string a ; A(a) --> 不报错,类型临时转换但是,但hai...有的就是不能临时转换(4). A(const string* &a) --实现-> string* a = new string ; A(a) -->但是这就是报错 //因为在声明里说了会用const类型的指针,但是你没用,此外,我们也没给它自动类型转换 const string* a = new string ; 套用正确 Summary: (1)//确定只有临时数据 或者 常规数据(非指针) 或者 类对象数据会传过来 就可在形参前面加上const关键字 (2) 但是指针是没法转换的,而且也没人用const指针,涉及指针传过来,就不要在形参里加上const
- 类的数据成员 - Const类型的数据
1.声明: Const int a;2.初始化: A(b): a(b); 初始化列表的方式初始化一个const数据,方式等同于引用型数据成员3.调用: const类型的数据成员必须被const类型的函数成员调用,常规类型的函数成员无法调用 //但是const类型的函数成员,除了可以调用const类型数据成员,还能调用其他类型的数据
- Const类型的initializer_list 因为ini_list比较特殊,单独说一下
initializer_list与const函数参数一致,都是const initializer_list<int> target
const的类函数 + const参数 报错引用实例
void function (const A &a) { ... }void function_1 () const { function (this) //正确版本,编译通过}
但是以下就不通过
阅读全文
0 0
- C++ 指针/引用/常规/CONST型成员的初始化与使用
- 指针与引用的初始化&顶层底层const变量初始化问题
- 2.4Const限定符(const初始化,const与引用,const与指针,const指针,顶层const,constexpr)
- 指针的初始化与引用
- C++const对象 常量数据 常量成员函数 const指针 const引用
- 类内部指针成员的管理--常规指针型行为
- const指针与引用
- 引用与 const指针
- const, 引用与指针
- const与指针、引用
- static const 型成员变量的初始化
- const型类成员变量的初始化
- 成员初始化列表 const 和引用
- const与引用,指针的初级用法
- const指针的引用
- const指针的引用
- C语言的const关键字与指针搭配使用
- C语言的const关键字与指针搭配使用
- AI 的架构与核心
- codeWars之-查找缺少的字母
- MAC上环境变量PATH的几种配置方法
- javascript基础知识点总结
- [杂言] 我,计算机,OI,和我的前 18 年,还有退役
- C++ 指针/引用/常规/CONST型成员的初始化与使用
- 线程(三)——多线程的实现方式
- temp_House
- MAC上安装Mysql数据库、配置环境变量、启动服务、修改密码
- 线段树的坑
- dspic
- gdb基本命令 与 技巧
- Struts2的action 的取值三种方式
- [Leetcode][python]Candy