1
C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。
当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。
C++ 中的函数重载
在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。
下面的实例中,同名函数 print() 被用于输出不同的数据类型:
#include
using namespace std;
class printData
{
public:
void print(int i) {
cout << "Printing int: " << i << endl;
}
void print(double f) {
cout << "Printing float: " << f << endl;
}
void print(char* c) {
cout << "Printing character: " << c << endl;
}
};
int main(void)
{
printData pd;
// Call print to print integer
pd.print(5);
// Call print to print float
pd.print(500.263);
// Call print to print character
pd.print(“Hello C++”);
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Printing int: 5
Printing float: 500.263
2
C语言编译系统提供的内部数据类型的自动隐式转换规则如下:
1.程序在执行算术运算时,低类型可以转换为高类型。
2.在赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给它。
3.当在函数调用时,将实参值赋给形参,系统隐式地将实参转换为形参的类型后,赋给形参。
4.函数有返回值时,系统将自动地将返回表达式类型转换为函数类型后,赋值给调用函数。
在以上情况下,系统会进行隐式转换的。当在程序中发现两个数据类型不相容时,又不能自动完成隐式转换,则将出现编译错误。例如:
int* p = 100;
在这种情况下,编译程序将报错,为了消除错误,可以进行如下所示的强制类型转换:
int* p = (int *)100;
将整型数100显式地转换成指针类型。
3
【C++】关于以下划线开头的变量名
C++:
符合命名标准,只是有些使用习惯,比如在我们自己写的类中,为了避免和成员函数名称重复,我们通常在类的成员变量前加上下划线。
另:最好不要轻易声明首字母为"_"的变量。就是说库函数内部实现用了这些函数,因为很多时候一个库函数功能的实现完全放在这一个函数里面可能不合适,或者某些库函数有共用的代码,怎么办的呢,就设计函数供库函数的实现调用。加下划线用意是避免命名重复。如果文档没有明确提及用法之类,最好不要用,以免实现改变了导致程序行为出现变化。
4
5;C++中所有的变量和函数都必须有类型
在C语言中
int f( );表示返回值为int,接受任意参数的函数
int f(void);表示返回值为int的无参函数
在C++中
int f( );和int f(void)具有相同的意义,都表示返回值为int的无参函数
5
const在c++中才是真正的变量,本质就是符号表
1)当一个变量定义为一个const类型的变量时,编译器就会在符号表中表示,并且是不会分配内存的,当编译期间发现有代码在取地址或extern时则会创建一个内存将符号表的那个值放入,但是这个地址与const变量除开值一样并没有什么关联。
C语言中的const变量
C语言中const变量是只读变量,有自己的存储空间,可以通过指针进行修改
C++中的const常量
可能分配存储空间,也可能不分配存储空间
当const常量为全局,并且需要在其它文件中使用,会分配存储空间
当使用&操作符,取const常量的地址时,会分配存储空间
当const int &a = 10; const修饰引用时,也会分配存储空间
2) const和#define相同与不同之处
相同的是 const在编译期间确定为常量,#define宏在预处理时,但是都可以作为数组的下标进行定义
不同的是作用域不同,const有作用域,而宏是全局的
6
c++中常引用const int &a的介绍:引用
https://blog.youkuaiyun.com/Mars_guest/article/details/78503291
7
这就是多态的一般使用方式。有了多态,您可以有多个不同的类,都带有同一个名称但具有不同实现的函数,函数的参数甚至可以是相同的。
虚函数
虚函数 是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。
我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接,或后期绑定。