C++基础 ----课后总结(1)

1、C++

C++ 是一种通用的、面向对象的编程语言,它是 C 语言的扩展,并支持高级特性如泛型编程、模板、继承和多态等。C++ 由 Bjarne Stroustrup 在 1980 年代初期创建。C++ 既可以作为系统编程语言,也可以用于开发应用程序和库,它具备高效性、可移植性、可扩展性和可重用性等优势。C++ 还是许多流行开源项目如操作系统内核和数据库引擎的首选语言。另外,C++ 可以与 C 语言混合编程,因为它兼容 C 语言标准库并支持低级操作,这样使得C++ 在保持高级特性的同时仍能兼顾底层程序设计和性能优化需求。


(1)新增自定义的类型转换


    C语言:
        实现基本数据类型的转换
        对于非基本的数据类型转换,不能实现转换
    C++:
        实现基本数据类型的转换
        实现自定义类型的转换,例如:类类型的转换


(2)严格的数据类型检查


    C++是一门静态型语言,如果程序有错误,在编译阶段就会将错误提出来
例如:
    C语言:  C语言的类型检查不是很严格  在某些场景他仅仅是报警告但是程序依旧可以运行。

(3)新增变量引用


    引用:
        符号:&
    解释:
        引用实质上是给已经存在的变量取一个别名
    使用格式:
            数据类型  & 别名=已经存在的变量名 ;  //数据类型:基本数据类型(int ,char),自定义类型:类类型
        例如:
            int b=20;
            int   &  a = b;   //给存在的变量b取一个别名输出结果为a和b的值都为20;

#include "iostream"
using namespace std;
int main()
{
int a=20;
int &b=a;

cout<<"a的值"<<endl;
cout<<"b的值"<<endl;
}

注:
    (1)编译器不会给引用变量另外开辟空间
    (2)引用类型的变量一旦存在必须对其进行初始化工作
    (3)引用类型的变量必须与一个已经存在的变量进行绑定
面试题:指针与引用的区别

指针是一个变量,保存了一个内存地址,可以通过解引用操作符 * 来获取该地址处存储的值。指针可以为空(nullptr),也可以指向任何类型的对象。指针可以被重新赋值,使其指向其他对象或者空。

引用是一个别名,它提供了对已存在的变量的另一种名称。引用必须在声明时初始化,并且不能重新绑定到其他变量。引用本身并不占据额外的内存空间,它直接引用了变量所在的内存位置。

实现两个数的交换,要采用多种值传递的方式实现(函数参数值传递)

#include "iostream"
using namespace std;
void change_value(int a, int b)
{
	int temp=0;
	temp=a;
	a=b;
	b=temp;
}
void change_value1(int *a , int *b)
{
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
}
void change_value2(int &a , int &b)
{
	int temp=0;
	temp=a;
	a=b;
	b=temp;
}



int main()
{
	
	
	int m=10;
	int n=20;
	//change_value(m,n);
	cout<<"交换之前m:"<<m<<endl;
	cout<<"交换之前n:"<<n<<endl;
	change_value2(m,n);
	cout<<"交换之后m:"<<m<<endl;
	cout<<"交互之后n:"<<n<<endl;

	//cout<<"a的地址:"<<&a<<endl;
	//cout<<"b的地址:"<<&b<<endl;
	//cout<<"c的地址:"<<&c<<endl;
	//cout<<"a="<<a<<endl;
	return 0;
}

(4)新增函数带默认值参数


    函数中的参数在声明的时候带了一个默认值
格式:
    函数返回值  函数名(参数1 , 数据类型  标识符=初始值)
    {

    }
例如:
    void   function(int a , int b=20) //参数b带默认值
    {
    }
如何调用带默认值的函数?
    (1)不更新默认值的形式调用
        例如:
            function(40) //正确    
    (2)更新默认值的形式调用
        例如:
            function(40,30);//正确

写法上,要将不带默认值的参数放在带默认值的参数前

(5)新增了函数重载以及运算符重载


运算符重载:略
函数重载:
    是指函数名相同,函数的参数类型或参数个数或参数的顺序不同,即可发生函数重载,c语言不能发生函数重载。 函数重载与函数返回值无关。

C++语言:
    支持函数重载
    练习:
        有一个同名函数,实现的功能是不同类型的数据进行交换
内联函数:
    声明:
        关键字:inline    //用于声明一个函数是内联函数

    格式:
        inline  函数返回值  函数名 (参数列表)
        {

        }
    例如:
        inline   void  function()
        {

        }
内联函数的使用:
    针对使用频度高的代码,且短小精简
    提高了编译器的执行效率

    面试题:
        对于使用频度高的函数,怎么设置才会提高编译器的执行效率?C语言怎么设置?C++怎么设置?

c语言使用宏定义

c++使用内联函数

(6)新增了智能指针


    作用是防止内存泄露,即将用户用裸指针开辟的堆空间的权利交给智能指针去管理


(7)新增了异常处理机制


    C++可以主动产生异常,也可以主动捕获异常并处理

2、C++文件架构及后缀


文件架构:
    (1)主程序文件:cpp
        在该文件里包含了一个main函数,就称该文件为主程序文件
        编译器在执行时,执行的是主程序文件
        放置变量的初始化,函数的定义或实现,类的声明或实现等等
    (2)头文件:.h
        该文件里主要放置变量的声明、函数的声明、类的声明等等
    (3)源文件:.cpp
        该文件里主要放置变量的初始化,函数的定义或实现,类的成员函数的实现等等
文件后缀:
    以windows为主:
        C++后缀:.cpp
    以linux为主:
        C++后缀:
            .cpp、.cs、.css等等
        常用的后缀是.cpp
编译器:
    Linux中C语言文件使用gcc进行编译
    LInux中C++文件使用g++进行编译
编译器的执行流程:
    (1)预处理
        工作内容:
            a、将源文件以外的内容全部加入到源文件中
            b、删除掉注释
            c、进行宏替换工作    
            d、条件编译
          
    (2)编译
        工作内容:
            a、将用户编写代码转换成汇编语言
            b、检查用户编写代买是否符合语法规范
    (3)汇编
        工作内容:
            a、将编译阶段翻译的汇编语言转换为机器语言
    (4)链接
        工作内容:
            a、生成可执行文件

          

 面试题:
                静态库和动态库的区别?

链接方式:静态库在编译时被完全复制到可执行文件中,与可执行文件链接为一个独立的可执行文件;而动态库在运行时被加载到内存中,并由多个可执行文件共享使用。

3、C语言和C++的区别

编程思想上:
    C语言:面向过程的语言,侧重点是在于过程
    C++:既面向过程也面向对象,C++的侧重点是在于对象
        面向对象编程:
            将一切事物看成是对象,一切皆对象
从使用上:
    参考C++是C的增强 

       
4、了解的基本术语

(1)类
    类是用于描述事物的特征和行为
(2)对象
    对象是类的实例化的过程
(3)特征
    是指变量或属性、成员变量
(4)行为
    是指函数或方法、成员方法
(5)继承与多继承
    一个新的类共享一个或多个已经存在的类的方法和属性
(6)聚合或组合
    一个类包含了另外一个类的对象,称之为“组合或聚合”
(7)静态绑定
    一个函数或表达式的地址在编译时就已经确定,称之为“静态绑定”
(8)动态绑定
    一个函数或表达式的地址在运行时才确定,称之为“动态绑定”
(9)多态
    一种接口,多种实现方法 

5.介绍第一个C++程序

#include "iostream"
//#include宏,用于包含其它的库文件
//库文件:iostream    //输入/输出流类:包含了输入流(用于输入数据)和输出流(用于输出数据)
//iostream    i:input   o:output    stream:流
//iostream : istream(输入流)和ostream(输出流)
//istream:对象:cin  ----  istream  cin
//ostream:对象:cout ----  ostream  cout

//符号:<>  或  “”
//<>括号括起来的库:编译器首先是从C++标准库寻找库文件,然后再从项目中寻找该文件
//“”括号括起来的库:编译器首先是从项目中寻找库文件,然后再从C++标准库中寻找该文件

//iostream后面没有.h后缀
//如果使用C++标准库里提供的库文件,则不需要加上后缀.h
//如果使用用户自己定义的库文件,则需要加上后缀.h

//using namespace std;//使用的是C++提供的命名空间
//命名空间里存放了C++实例化的流对象:cin、cout、endl、cerr、clog等等

/*
int main() //程序的入口地址
{
	cout << "hello world" << endl;//第一个C++代码
	cout输出流对象:将数据从内存里取出来输出到控制台或显示器
	endl:结束换行
	符号“<<”(输出符号:数据从内存流向控制台):在C语言中表示移位运算符,在C++中对该运算符进行重载,表示数据的流动方向
	符号“>>”(输入符号:数据从控制台流向内存):在C语言中表示移位运算符,在C++中对该运算符进行重载,表示数据的流动方向
	  “//”表示行注释    表示块注释   快捷注释:ctrl+shift+/
	return 0;
}
*/
//#include "iostream"
using namespace std;
int main()
{
	cout << "hello world" << endl;
	return 0;

}

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值