C++ const引用】的更多相关文章

(1)       在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数.引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用. 1 int ival = 1092; 2 int &re = ival;   //ok 3 int &re2 = &ival;   //错误 4 int *pi = &ival; 5 int *&pi2 = pi;   //ok (2)       一旦引用已经定义,它就不能再指向其他的对象…
一.const常量 声明时必须同时初始化(和“引用”一样) 二.const指针 三.const引用 引用本身和引用的对象都是const对象,可以用字面值来赋给const引用(普通引用则不行) ; const refB=B; //const变量的声明和初始化 ;//字面值给const赋值 ;//错…
1.为什么使用传const引用? a.被调方法中,形参不再进行copy构造,以及析构,提高效率. b.传值,会出现对象切割的问题. 2.有没有例外? 在编译器底层,引用是使用指针实现的.这就意味着,如果对象是内置类型,迭代器,函数对象,传值效率更高.因为传引用也就是传指针,而内置类型,迭代器,函数对象copy构造效率也很高,不会比copy构造指针效率差.…
在C++中可以声明const引用 const Type& name = var: const引用让变量拥有只读属性 const int &a = b const int &a = 10; Case1: <pre name="code" class="cpp">#include <iostream> using namespace std; //常引用的知识架构 int main() { //普通引用 int a = 1…
拷贝控制 右值与const引用 背景:当一个函数的返回值是自定义类型时,调用侧用什么类型接收?? 1,如果自定义类型的拷贝构造函数的参数用const修饰了:可以用下面的方式接收. Test t2 = fun(t1); 2,如果自定义类型的拷贝构造函数的参数没有用const修饰了:必须用下面的方式接收 const Test& t2 = fun(t1); Test t2 = fun(t1);//编译不通过 编译错误: cannot bind non-const lvalue reference of…
1.const引用: 但是加上const之后是可以的,const int &a=100;就不会报错了. 2.函数占位参数: 如果给最后的占位参数加上默认值: 3.内联函数 内联只是对编译器发起一个申请,编译器可以拒绝用户的请求.内联函数只用在普通函数的开头加上inline关键字. 当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置.这样做的好处是省去了调用的过程,加快程序运行速度.节省时间但是消耗空间. inline函数的规则 (1)含有递归调用…
1.引用.常量引用 引用主要被用做函数的形式参数--通常将类对象传递给一个函数. 引用在内部存放的是一个对象的地址,它是该对象的别名.引用不占用内存,因为取地址引用的值和被引用变量的地址相同.但是objdump –d xx底层编译器实现其实还是指针. (1)引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用. ; ; //错误.非常量引用的初始值必须为左值 int &re = ival; //ok int &re2 = &ival; //错误.不可用对象…
一.引用 引用是别名 必须在定义引用时进行初始化.初始化是指明引用指向哪个对象的唯一方法. const 引用是指向 const 对象的引用: ; const int &refVal = ival; // ok: both reference and object are const int &ref2 = ival; // error: non const reference to a const object 可以读取但不能修改 refVal ,因此,任何对 refVal 的赋值都是不合…
int f (int & I) { cout<<I<<std::endl; } void main() { long L; f(L); // 编译不过 f((int)L); // 编译不过 f((int&)L);// 编译过 } 编译不会通过,这种情况下pL不会自动转换成int *,因为类型转换会生成临时变量,不能接收函数返回值 void func(int *& a){}; void * p; int * pint; func(pint); func((in…
void print1(int a) { cout<<a<<endl; } void print2(const int& a) { cout<<a<<endl; } void print3(int& a) { cout<<a<<endl; } int main() { ; int& b = a; const int& c = a; print1(a); print1(b); print1(c); pri…