重载和const形参

1.int lookup(string p);

2.int lookup(const string p);//同1

3.int lookup(string *);//传入一个指针,指针指向string类型

4.int lookup(string * const p);//传入的是一个string,指针常量p指向string,不可以对p进行重新指向,同3的使用一样

5.int lookup(string &p);//地址传递,传入的是p的地址,对p进行操作,可以改变传入参数p的值。

6.int lookup(const string &p);地址传递,传入的是p的地址,p中是一个常量,lookup中不可以对p进行修改。

7.int lookup(const string *p);//传入一个指针,指针指向const string类型

时间: 2024-11-03 21:14:56

重载和const形参的相关文章

<转>函数重载之const

函数重载之const 2012-03-10 10:17:17|  分类: C/C++学习笔记|举报|字号 订阅 我们知道,如果函数名相同,在相同的作用域内,其参数类型.参数个数,参数顺序不同等能构成函数重载.有趣的是如果同时在类中,对于函数名相同的const函数和非const函数能够构成重载,同时它们被调用的时机为:如果定义的对象是常对象,则调用的是const成员函数,如果定义的对象是非常对象,则调用重载的非const成员函数.例如:#include <iostream>using names

const形参与非const形参

在程序设计中我们会经常调用函数,调用函数就会涉及参数的问题,那么在形参列表中const形参与非const形参对传递过来的实参有什么要求呢? 先来看一个简单的例子: [java] view plain #include <iostream> #include <string> using namespace std; void print_str(const string s) { cout<<s<<endl; } int main() { print_str

const形参和实参

当形参是const时,必须要注意关于顶层const的讨论.如前所述,顶层const的作用于对象本身: const int ci=42;  //不能改变ci,const是顶层的 int i=ci:   //正确:当拷贝ci时,忽略了它的顶层const int *const p=&i;  //const是顶层的,不能给p赋值 *p=0;    //正确:通过p改变对象的内容是允许的,现在i变成了0 和其他初始化过程一样,当用实参初始化形参时会忽略掉顶层const.换句话说,形参的顶层const被忽略

重载和const参数

const仅能用于在定义函数签名时,区分是为引用定义参数,还是为指针定义参数.定义基本类型type(如int等),从重载的观点来看,const int和int是相同的. const long&   和 long&不同 long* 和 long* const 相同 .表示Type(指向long的指针和指向const修饰的指向long的指针)

参数传递:传值参数,指针形参,传引用参数,const形参和实参,数组形参,main:处理命令行选项,含有可变形参的函数

重点: 1.每次调用函数时都会重新创建它的形参,并用传入的实参对形参进行初始化. NOTE: 形参初始化的机理与变量初始化一样. 2.形参的类型决定了形参和实参交互的方式. (引用->绑定,非引用->拷贝) 3.实参分为:被引用传递(引用形参是实参的别名),被值传递(实参形参是两个相互独立的对象). 4.传值参数:函数对形参做的所有操作都不会影响实参. 5.指针形参:指针的行为和其他非引用类型一样,当执行指针拷贝操作时,拷贝的是指针的值.拷贝后,两个指针是不同的指针. NOTE: C程序员常常

C++重载(关于const的重载)

#include <iostream> #define DefaultSize 10 using namespace std; template<typename T> class Grail { public: Grail() { data = new T[DefaultSize]; for(int i=0;i<10;i++) { data[i]=i; } } const T& operator[](int size)const { return data[size

【共读Primer】53.[6.4]函数重载 Page207

在同一个作用域内,几个函数名字相同但形参列表不同,我们成为重载(voerloaded)函数. void print(const char *cp); void print(const int *beg, const int*end); void print(const int ia[], size_t size); int j[2] = {0, 1} print("Hello World"); print(j , end(j) - begin(j)); print(begin(j) -

C++学习笔记3

函数小结 : 函数是有名字的计算单元,对程序(就算是小程序)的结构化至关重要.函数的定义由返回类型.函数名.形参表(可能为空)以及函数体组成.函数体是调用函数时执行的语句块.在调用函数时,传递给函数的实参必须与相应的形参类型兼容. 给函数传递实参遵循变量初始化的规则.非引用类型的形参以相应实参的副本初始化.对(非引用)形参的任何修改仅作用于局部副本,并不影响实参本身. 复制庞大而复杂的值有昂贵的开销.为了避免传递副本的开销,可将形参指定为引用类型.对引用形参的任何修改会直接影响实参本身.应将不需

[c++primer][07]函数

7.1 函数的定义 函数调用做了两件事情:用对应的实参初始化函数的形参,并将控制权转移给被调函数. // return the greatest common divisor int gcd(int v1, int v2) { while (v2) { int temp = v2; v2 = v1 % v2; v1 = temp; } return v1; } 7.2 参数传递 形参的初始化与变量的初始化一样,如果形参具有非引用类型,则复制实参的值:如果形参为引用类型,则它只是实参的别名. 非引