C++入门(重载,缺省参数,命名空间)

介绍c++
        可以这样理解,c++是c语言的升级版,如果把c语言看作一个类,那么c++就是c语言的继承,也就是说,c++兼容c语言的所有语法,并且拥有自己的特定的语法,,c++是面向对象的语言,也可以基于过程的程序设计
特点:
  • 封装性: 类是支持数据封装的工具,对象则是数据封装的实现。c++可以通过private
  • 继承:在C++现有类的基础上可以声明新类型,这就是继承和重用的思想
  • 多态性: 简单的说,一个父类可以被多个类继承,父类传给子类的数据可以一置,但在不同的子类中对这些数据进行不同的操作
为什么C++支持重载?C语言不支持?
        重载就是存在多个函数名相同而参数不同的函数,注意:重载与返回值没有关系
        承载的根本原因在于编译器对函数名的解释,具体点说,在c与原中,c编译器将函数名作为最终识别的主体内容,如果出现一个函数名相同的函数,不管参数想不想相同,直接取函数名,这样就会与前面一个函数名重复,在使用上,编译器不知道应该使用哪一个,所以重载在c语言中自然行不通过,而c++对函数名的解释规则有所不同,除了拿函数名做主要内容外,还会加上参数的缩写,所以即使函数名相同,只要参数不同,编译器就不会报错,也就自然支持重载。

#include <iostream>
int add( int a, int b) {
        std::cout << "add(int int) = " ;
         return a + b;
}
double add( double a, double b) {
        std::cout << "add(double double) = " ;
         return a + b;
}
int main()
{        
         int ret1 = add(3, 4);
         int ret2 = add(3.2, 4.2);
        std::cout << ret1 << std::endl;
        std::cout << ret2 << std::endl;
        system( "pause" );
         return 0;
}
实验结果:


缺省参数
在传参时,假设几个函数有三个参数,但是就算我一个参数也不传,代码也不会出错,原因是这个函数的参数有一个默认值,如果不传参,那么就会使用这些默认值,注意:对参数进行缺省时,要从右往左缺省
#include <iostream>
int add( int a = 1, int b = 1) {
        std::cout << "add(int int) = " ;
         return a + b;
}
int main()
{
         int ret = add(3, 4);
        std::cout << ret << std::endl;
        ret = add();
        std::cout << ret << std::endl;
         return 0;
}
实验结果:
命名空间
命名空间的存在是为了防止名字污染,假如没有命名空间,当一个工程相当庞大之后,其中就会因很多的对象名,函数名,类名形同,解决起来就会特别麻烦,耗时,降低开发效率。在这个背景下,命名空间的优势就很好的体现出来,解决了很多问题。
#include <iostream>
namespace A {
         int a = 10;
}
namespace B {
         int a = 20;
}
int a = 30;
int main()
{
         int a = 40;
        std::cout << "A::a = " << A::a << std::endl;  // :: 为作用于解析符
        std::cout << "B::a = " << B::a << std::endl;
        std::cout << "C::a = " << a << std::endl;
        std::cout << "D::a = " << ::a << std::endl;
         return 0;
}
实验结果

猜你喜欢

转载自blog.csdn.net/luhaowei0066/article/details/80979094
今日推荐