标签:val targe 运行速度 ade 编译 函数返回 必须 class 数组
int a = 0;
int &r = a; //变量r的类型为int &
#include <iostream>
using namespace std;
int n = 4;
//函数体setvalue()实现对返回值n的引用
int & setvalue(){ return n; }
int main()
{
setvalue() = 40; // 直接对返回值进行修改
cout << n << endl; // 40
return 0;
}
要求:无法通过常引用修改变量值
#include <bits/stdc++.h>
#define DEBUG
using namespace std;
int main()
{
int n = 100;
const int & r = n;
n = 1000;
r = 1000;
return 0;
}
/*
[Error] assignment of read-only reference ‘r‘
*/
1. const T & 与 T & 是不同的类型(常引用与非常引用属于不同的类型)。
2. 常引用可以被普通引用以及普通类型变量初始化。
3. 常量以及常引用无法初始化引用。
/*
1. 定义常量指针,无法通过常量指针修改内容
2. 函数参数为常量指针时,可避免函数内部不小心改变 参数指针所指地方的内容。
3. 定义为const的对象的所有数据成员的值都不能被修改。凡出现调用非const的成员函数,将出现编译错误。但构造函数除外。因为如果调用非const函数无法保证对象不被修改。与const的规则的相违背。
*/
const int * p = & n; //定义常量指针
const int & r = n; //定义常引用
概念辨析:
常引用所引用的变量,其值不能被修改(错误,可以通过引用的对象修改原有的变量)
不能通过常量指针,去修改其指向的变量(正确)
常量指针一旦指向某个变量,就不能再指向其他变量(错误)
P = new T;
delete 指针;
------------------------------------------------------------------------------
int * pn;
pn = new int;
* pn = 5;
P = new T[N];
delete [ ] 指针;
-----------------------------------
char * p = new int;
p = ‘a‘; // 错误,字符类型赋值给指针变量
delete p;
----------------------------------
int *p = new int[25];
p[10] = 100; // 错误,越界
delete p;
-----------------------------------
char * p = new char[10]; // 正确
p[0] = ‘K‘;
delete [] p;
/*使用inline关键字定义内联函数*/
inline int Max(int a,int b)
{
if( a > b) return a;
return b;
}
重载函数具有以下特点:
编译器如何区分重载函数?
重载的好处:
重载的实例:
int Max(double f1,double f2) { } // (1)
int Max(int n1,int n2) { } // (2)
int Max(int n1,int n2,int n3) { } // (3)
Max(3.4,2.5); //调用 (1)
Max(2,4); //调用 (2)
Max(1,2,3); //调用 (3)
Max(3,2.4); //error,没有参数1为int类型,参数2为double的类型的重载函数
注意点:
实例:
void func( int x1, int x2 = 2, int x3 = 3){ }
func(10 ) ; //等效于 func(10,2,3)
func(10,8) ; //等效于 func(10,8,3)
func(10, , 8) ; //不行,只能最右边的连续若干个参数缺省
概念辨析:
A) 多个重载函数的参数个数必须不同。 (错误,可能时类型不同)
B) 两个函数,参数表相同,返回值类型不同,它们是重载关系。 (错误)
C) 调用一个第二个和第三个参数都有有缺省值的函数时,可以不写第二个实参而写第三个实
参。 (错误,参数时按照顺序匹配的)
D) 使用内联函数的目的是提高程序的运行速度
2018年4月7日笔记
01 C++的引用,const,new/delete,重载,内联函数的概念辨析
标签:val targe 运行速度 ade 编译 函数返回 必须 class 数组
原文地址:https://www.cnblogs.com/kfcuj/p/14613944.html