Lesson01---C++入门

什么是c++

1. c++发展史

  • c语言是结构化和模块化的语言,适合处理规模较小的问题。对于复杂的问题,规模较大的程序,如网络游戏,c语言则不适合。为了解决软件危机,20世纪80年代,计算机界提出了OOP(Object Oriented Programming)思想,面向对象思想,由此,面向对象程序设计应运而生。
  • 一种优秀的编程语言,一定要对于计算这件事情实现一个完整和自洽的抽象。十几年来编程语言领域的竞争,除却实现质量之外,基本是在比拼抽象的设计。而C++成功的根本原因,恰恰是因为它提供一些高级的抽象机制。

2. c++的地位与重要性

  • 最近的5年,每年都会诞生超过50种新的编程语言。但是c++语言却始终位居前三,并不时地挑战榜首。
  • 操作系统以及大型系统软件开发,几乎所有操作系统、所有大型软件都是C/C++写的,究其原因还是性能高,可以直接操控硬件。
  • 服务器端开发,游戏开发,PC端几乎所有的游戏都是C++写的,相当多的游戏引擎都是基于C++开发的,三维游戏领域计算量非常庞大,这些高难的的需求无疑只能选C++语言。
  • 嵌入式和物联网领域、数字图像处理、人工智能、分布式应用。

3. 如何学习c++

  • 写博客,学习是需要不断思考并把结果沉淀,可以通过写博客来梳理自己所学。
  • 多读书,前期如《C++程序设计》《C++ primer》,学习过半,大致在学完继承与多态之后,可以看下《effective C++》,教我们如何写出更好的c++程序,其中《C++ primer》可以当作字典、工具书来对待,有不懂的知识点可以主动查阅。后期在基本会用c++的阶段,可以看看《STL源码剖析》,毕竟会用STL还不够,要深入了解STL六大组件,以从容面对面试。
  • 勤刷题(很重要)。

正式进入c++

1.c++关键字

当然关键字不需要可以去记忆,在以后学习、使用的过程中会慢慢学到

2.命名空间

C语言无法解决这样的冲突:

int rand = 10;
int main()
{
	printf("%d",rand);//编译报错rand重定义
	return 0;
}

大家知道,不论在程序的什么位置,使用到的名字都会指向一个实体:变量、函数、类型等。然而在C++中同一个名字如果出现在不同的位置,也可能指向的是不同的实体。

在C语言中定义了三个层次的作用域:文件、函数、复合语句(用大括号括住的语句)。C++又引入了作用域,在不同的作用域内可以定义相同的名字,它们互不干扰、各司其职,例如:

class cat
{
	void meow();
	//...
};
class dog
{
	void meow();
	//...
};

但是在引用时要说明它属于哪个类:

void cat::meow()
{
   //...
}
void dog::meow()
{
   //...
}

先了解一个概念:文件是不同的作用域,但是如果在两个文件的全局域定义了同名的变量或者函数,那么在进行连接时会报错:
在这里插入图片描述

在这里插入图片描述

问题在于全局变量的作用域是整个程序,而在同一个作用域内不允许出现同名函数或者变量,解决办法是使用关键字 extern :如果一个全局变量或函数在文件1中定义了,而在文件2想使用,就可以用extern在文件2中声明这个标识符,他们就是同一个变量或者函数。

命名空间的引出:
所谓命名空间,就是程序猿指定的一些分隔开来的空间域,把一些全局实体分别放在各个命名空间中,定义了一个新的作用域,以此把其他全局实体分隔开来,以免产生冲突。
命名空间的定义

namspace cat    //自主定义
{
	//变量,函数、结构体、类、模板、命名空间
	int dog = 666;
	void woof();
	
}
  1. 在其他作用域的使用:
cat::meow
cat::woof();
  1. 或者将命名空间中的某个成员引入:
using cat::dog;
int main()
{	
	cout<<dog;
}
  1. 直接在全局将命名空间展开:、
using namespace std;
int main()
{
	int a = 3;
	cout<<a;
}

这里使用的就是std::cout
注意:
编译器会把不同文件的命名空间合并在一起。

3.缺省参数与函数重载

在C++中,函数的参数列表可以赋予默认值,也就是说,如果一个函数有缺省参数,那么在调用他的时候可以传参,也可以不传参。如果不传参,参数就是默认值,如果传参,参数就是给定的值。
需要注意
如果函数声明与定义分离,那么只在函数声明时给缺省参数,函数定义时不写默认参数。

4.引用

引用为对象起了另外一个名字

int a = 6;
int& b = a;

引用把所有操作a与b绑定在了一起,更准确的说,a和b在内存中占用同一块空间。
在这里插入图片描述
需要注意的是:
引用必须初始化且必须引用变量,若必须要引用常量,应该:

const int& a = 0;

5.内敛函数

用法:

inline void bird()
{
	//...
}

作用:
建议(只是建议,有可能不会这么做)编译器在调用此函数处直接将此函数展开,而不是调用该函数,通常内联函数不建议声明与定义分离,因为会可能导致链接错误。

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值