C++初识

C++

  • C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。
  • C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
  • C++是在C语言的基础上开发的一种面向对象编程的语言,应用非常广泛。
  • C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
语言特点:

C和C++比较明显的一个区别是:C语言不支持重载,而C++支持重载,那这是为什么呢??

首先需要知道什么是重载?
这里有三个比较相似的概念:重载、重写、重定义。
1.重载:在同一作用域,函数名相同参数不同(类型或个数),返回值可以不同
2.重写:不在同一作用域(分别在基类和派生类),函数名相同参数相同返回值相同(协变例外),基类函数必须有virtual关键字,访问修饰符可以不同
3.重定义:在不同作用域(分别在基类和派生类),函数名相同,在基类和派生类中只要不构成重写就是重定义
例如:

void func(int a, int b) 
{
     ..... 
} 
void func(char a) 
{ 
    ......
} 
int main() 
{  
    func(1, 2);
    func(a); 
    return0;
}

main函数不支持重载,因为程序的入口只能有一个
从代码的编译到运行,在VS编译器下,是系统直接完成了翻译与链接,直接生成了运行结果。
编译器内部完成了翻译部分:
1.预处理
2.编译
3.汇编
4.链接
比如一个函数的声明如下

void func(int a, int b) ;

在C语言中,编译器在编译后在库中的名字为_func
在C++中,编译器在编译后在库中的名字为_func_int_int

还有一个函数的声明如下

void func(char a, char b) ;

在C语言中,编译器在编译后在库中的名字为_func
在C++中,编译器在编译后在库中的名字为_func_char_char

在链接时,都是找名字进行链接的,在C语言中两个名字一样,所以在链接时会报错。而C++里他们的名字不相同,所以不会报错。
所以C语言不支持重载,而C++支持重载!!!

缺省参数

所谓缺省参数就是在声明函数的某个参数的时候为之制定一个默认值,在调用该函数的时候如果采用该默认值就无需指定该参数。

  • 缺省分为全缺省和半缺省

全缺省:函数的每个参数都给一个默认值

int Add1(int a = 0,int b = 0);

半缺省:只给一部分参数的默认值(半缺省时只能从右向左缺省)

int Add2(int a,int b = 0);

注:
带缺省值的参数必须放在参数列表的最后面
缺省值必须是常量
缺省参数必须通过值参或常参传递。引用参数var不能有缺省值

命名空间

以关键字namespace开始,其后接命名空间的名字,命名空间的名字在其所在作用域中是唯一的,解决了程序中的命名冲突。命名空间可以在全局作用域或者其他作用域内部定义,但是不能在函数或者类的内部定义。命名空间作用域不能以分号结束。
在声明一个命名空间时,花括号内不仅可以包括变量,而且还可以包括以下类型:
变量(可以带有初始化)、常量、数(可以是声明或定义)、结构体、类、模板、命名空间。
标准C++库中的所有组件都是在一个被称为std的命名空间中声明和定义的。在采用标准C++的平台上使用标准C++库中的而组件,只要写一个using指示符:

using namespace std;

就可以直接使用标准C++库中的所有成员。或者

std::成员

的方式也可以使用C++库里的成员。
::是作用域解析符
例如:

namespace name1 
{ 
    int a = 0; 
}
namespace name2
{     
    int a = 1;
}
name1::a = 3;
name2::a = 4;

写一个简单的小程序

#include<iostream>
using namespace std;
int main()
{
    std::cout<<”hello world”<<std::end1;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/nessie_zhao/article/details/81118941