1.什么是C++?
C++是在C语言基础上迭代出的高级语言,它向下兼容C语言,向上进行了扩充,引入了面向对象的概念。所以说C++既是面向过程的语言,又是面向对象的语言。从内容上看,C++相对C语言主要变化是提供了强大的STL库,其对C语言中的栈,堆,队列等数据结构进行了封装,减少了程序员“造轮子”的环节,同时提供了一些算法,方便了日常使用。
2.面向对象和面向过程有区别?
面向对象主要是将事务看成一个个实体,每个实体都有自己的属性和方法,一件具体事情的完成是由各个对象彼此分工,相互协作来实现的。面向过程是强调过程,它是将事情划分为一步一步的实际操作过程,一般简单逻辑使用面向过程,复杂逻辑使用面向对象编程。
就拿番茄炒蛋打比方,面向过程就是将做法分为先打碎鸡蛋,然后搅匀,加调味料,下锅炒,捞出,炒番茄直到出汁,混入鸡蛋翻炒,装盘。面向对象就是将番茄,鸡蛋,锅,调味料看成对象,各自都有属性和方法,比如鸡蛋的方法就是打碎,搅匀,锅的方法就是翻炒。如此是不是好理解多了。
它们有各自的优缺点,面向过程性能高于面向对象,但是可维护性低。而面向对象的封装、继承、多态特性能够使设计出的系统更加灵活。
3.如何写一个C++程序?
#include<iostream>
int main(){
using namespace std;
cout<<"hellocpp!"<<endl;
return 0;
}
输出
4.cin,cout,endl
endl是C++中的换行符,类似于C语言的"\n";
cin和cout分别为C++中的标准输入和标准输出,类似于C语言中的scanf和printf函数,使用它们时需要包含头文件<iostream>以及std标准命名空间。
cin、cout和scanf、printf各自的优缺点
优点:cin将判断变量类型的工作交给了编译器,而scanf是指针操作,需要程序员给出变量类型,优点是简化了程序员的工作;对类类型的处理更加智能;
缺点:编译器判断变量类型会导致效率降低。
cout和printf也是具备以上优缺点,同时,cout运算符是可以重载的,这也就意味着将刷新缓冲区的权利交给了程序员,而printf中是没有缓冲区的。幸运的是,C++是兼容二者的,使用哪一个就看个人习惯了。
5.using namespace std是什么玩意?
5.1 namespace (命名空间)
在c++中函数名变量名都是大量存在的,如果直接放在全局变量中,那么我们自己定义变量名或者类名时大概率会产生命名冲突,所以命名空间这个概念应运而生。实际上命名空间是一个作用域,它将其中的成员函数和变量的作用范围限制在此作用域中,当我们需要使用其中变量时,再把这个命名空间拿过来使用。
命名空间有以下三种使用方式
namespace test{
int a=1;
int b=2;
int add(int a,int b){
return a+b;
}
}
(1)加命名空间名称以及作用域限定符
int main(){
printf("%d\n",test::a);
return 0;
}
(2)使用using将命名空间中的成员引入
using test::b;
int main{
printf("%d",b);
return 0;
}
(3)使用using namespace将命名空间名称引入
using namespace test;
int main{
printf("%d",b);
return 0;
}
5.2 std
std是C++中的标准库,里边定义了许多函数,比如cin,cout,容器,迭代器等等。所以上边我们使用cin,cout时需要使用命名空间调用std这个库,想了解更多std库的内容,可以具体搜索。
6.C++中的缺省参数
缺省参数的意思是在函数声明或者函数定义时,为函数设置一个默认值。如果在调用时未指定实参则使用该初始值。缺省参数也分为半缺省和全缺省。
6.1全缺省参数
#include<iostream>
using namespace std;
void fun(int a=1,int b=2,int c=3){
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
}
int main(){
fun();
}
调用时完全未赋值,定义时赋值。
6.2半缺省参数
#include<iostream>
using namespace std;
void fun(int a,int b=2,int c=3){
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
}
int main(){
fun(1);
}
注意:
*半缺省参数必须从右往左依次提供,不能间隔的赋值
*缺省参数不能在声明和定义同时出现
*缺省值必须为全局变量或者常量
以上就是我们第一天的内容啦,如果有问题的小伙伴们可以在评论区留言,我会很快回复的呦,那么明天再见喽!