C++知识点汇总

一.C++入门

1. c++课程重要性

1. c++是面向对象的编程语言,面向对象是目前主流的开发思想

2. C++是后续QT的基础,QT是嵌入式领域图形开发框架

3. C++和QT相对独立,弯道超车的机会

4. C++和QT是一个就业方向

2. C++发展

1983年,贝尔实验室(Bell Labs)的Bjarne Stroustrup发明了C++。 C++在C语言的基础上进行了扩充和完善,是一种面向对象程序设计(OOP)语言。

C++的源文件扩展名是cpp

Stroustrup说:“这个名字象征着源自于C语言变化的自然演进”。还处于发展完善阶段时被称为“new C”,之后被称为“C with Class”。C++被视为C语言的上层结构,1983年Rick Mascitti建议使用C++这个名字,就是源于C语言中的“++”操作符(变量自增)。而且在共同的命名约定中,使用“+”以表示增强的程序。

常用于系统开发,引擎开发、嵌入式开发等应用领域, 至今仍然是最受广大程序员喜爱的编程语言之一。

C++在嵌入式中可以用于:

系统开发、算法开发、图形用户界面(GUI)开发。

3. C++的特点

1. C语言基础上,全面支持面向对象开发

2. 功能强大,应用领域广泛

3. 为数不多支持底层开发的面向对象语言

4. 在面向对象语言中,C++运行效率比较高

4. C++学习方法

1.C++知识点概念内容比较多,反复复习。

2.课程偏理论,有的内容不理解,可以先背下来,后续课程可能会理解更深

3.学好编程要多练习,简单的也要手写确认一遍,记笔记。

4.不懂的地方,有想自己测试的地方:做好标记,最重要的是继续,不要立刻查书、反复看代码。会错过后续内容,越来越听不懂;

5. 学习过程中不可能每个知识点都100%懂,有些内容可能经过多年的程序开发实践才领悟,所以即使有不懂的也按进度计划前行

5. c和c++区别

做饭 洗衣服 扫地

c语言处理事情的逻辑:

1. 自己做饭

2. 自己洗衣服

3. 自己扫地

把事情事情分条目,一步步来做,这样是能够把握细节,符合计算机的思维,特点是运行效率高,开发效率低

C++语言处理事情的逻辑:找个对象让TA来做。

调用不同的对象来处理不同的事物,符合人的思维,特点运行效率低,开发效率高。

C语言的方式怎么来做,C++考虑的是找谁来做

6.软件安装

按照流程一直下一步,需要注意按照路径不能有中文。按照完成找到下方内容打开

6.1更改编码

重启就可以了,不用再看是否编码改成GBK

6.2 创建新项目

下一步完成

6.3 运行

点击下方图标运行 或者是Ctrl + R

6.4 添加c++11支持

QMAKE_CXXFLAGS+=-std=c++11

第一个程序

代码对齐快捷方式 ctrl + i

#include <iostream>   //输入和输出的头文件

using namespace std; //使用标准的命名空间

int main()
{
    cout << "你好" << endl;  //cout输出  endl:end line 换行
    int a=10;
    char ch='A';
    cout<
    cout<

    //输入
//    int b;
//    cin>>b;
//    cout<

    //c++中字符串 string 是C++内置的一个专门用于处理字符串的类。代替C语言的char *
    string s="hello";
    string s2("world"); //c++中写法

    //传统的遍历方式
    for(int i=0;i
        cout<
    }
    cout<
    //c++11中的遍历方式 for each。
    for(char ch:s2){
        cout<
    }

    return 0;
}

二.引用 (掌握)

1.引用概念

概念:相当于给变量取个别名

操作引用就相当于操作变量,注意引用类型和变量类型保持一致

性质1:成为一个变量的引用之后,就不能成为其他变量的引用

#include <iostream>   //输入和输出的头文件
using namespace std;	//使用标准的命名空间
int main()
{
    int a=10;
    int& small_a=a;
    cout<<&a<<" "<<&small_a<<endl;	//0x61fe84  = 0x61fe84

    int b=20;
    small_a=b;//这里是把b的值给了small_a
    cout << a << " " << small_a << endl; 	//20 20
    cout << &a << " " << &small_a << endl;	//0x61fe84 0x61fe84
    &small_a=b; 		//错误:不允许再成为其他变量的引用	
    return0;
}

性质2:引用必须初始化并且不可以为NULL

#include <iostream>   //输入和输出的头文件
using namespace std;	//使用标准的命名空间
int main()
{
    int& a;  	//错误:引用必须初始化
    int & b=NULL;  //错误:引用初始化不能为NULL
    return0;
}

性质3:当作为纯数字的引用时,需要加const修饰。代表其引用的数值不可更改

#include <iostream>
using namespace std;
int main()
{
    //int & a=100; 		//错误:修饰纯数字未加const
    const int& a=100;
    return 0;
}

性质4:const修饰的引用,不可以更改变量值。但是变量值更改之后,引用的值是会跟着变化

#include 
using namespace std;
int main()
{
    int a=100;
    const int& b=a;
    //b++; 	//错误:只读不允许修改值
    a++;
    cout << a << " " << b << endl;	//101 101
    return 0;
}

引用的应用:

C++中参数的传递有两种:

1. 值传递 :只是实参的一个拷贝,形参改变不会影响实参的值

2. 引用传递 : 不会产生拷贝副本,相当于操控的变量本身

引用传递可以提高参数的传递效率,因为引用传递就不需要给形参开辟空间,也不需要为其赋值。可以操作使用变量。

如果只是想取到变量值,不做变量值的修改,可以const修饰引用,避免不小心更改到变量的值

三.函数提高

1. 内联函数inline (熟悉)

关键字inline 修饰的函数,取代c语言中的宏定义

作用:编译期会把函数体的内容展开到调用处,节省了函数调用的时间,提高了效率

使用内联函数的条件:

1. 函数体内容少(5行以内)

2. 函数运行时间短,不能复杂的循环

3. 调用频繁

2.函数的默认值(掌握)

函数中参数允许有默认值,如果这个参数不传值,就用默认值。如果传入值,会把默认值覆盖掉。默认值可以提高程序的灵活性。

函数默认值的注意事项:

1.函数声明和定义分离时

声明和定义分离的时候,函数默认只需加在声明处

void draw(string color = "black");	//函数声明
void draw(string color){    
    cout << "当前画笔颜色:" << color << endl;
}

2.函数有多个参数时

当函数有多个参数时,“向后原则”:其中一个参数有默认值,其后的参数都需要有默认值。

void test(int a,int b=20,int c=0){
    cout<<a<<" "<<b<<" "<<c<<endl;
}
int main()
{
    test(10,30);	//10,20,30
    test(5);	//5,20,0
    test(10,20,30);		//10,20,30
    cout <<endl;
}

3.函数的重载(掌握)

C++中允许函数重名,处理相同或者相似的业务逻辑。但是需要参数列表不同,参数的个数不同,参数的类型不同,参数的顺序不同进行区分。但是不能通过返回值不同进行区分

void show(int a){
    cout << a << endl;
}
void show(string buf){
    cout << buf << endl;
}
void show(int a,int b){
    cout << a << " " << b << endl;
}
int main()
{
    show(20);
    show("LOL");
    show(10,30);
    cout << endl;
}

函数重载的注意事项:

函数重载不要和函数默认值一起使用。容易产生错误

练习:写一个计算工资的函数getSalary. 普通文员工资只有基本工资base_salary. 销售的工资包括基本工资base_salary和奖金bonus 。 函数重载形式给出这两个函数

#include 
using namespace std;

void getsalary(int base_salary)
{
    cout << "文员工资:" << base_salary << endl;
}
void getsalary(int base_salary,int bonus)
{
    int sum = base_salary + bonus;
    cout << "销售工资:" << sum << endl;
}

二、面向对象基础

面向对象的三大特征:

封装、继承、多态

类与对象

物以聚,人与群分

类:同一类事物(对象)共同特征提取出来,就形成了类。类是抽象的概念

对象:由类创建的具体实体

类中包括属性行为

属性:描述类的数据,一般都是名词2

行为:描述类的具体操作,一般都是动词

人: 属性:姓名 性别 年龄

行为:吃喝睡 学习 睡觉

电脑: 属性:品牌 型号

行为:播放音乐 播放视频 运行游戏

1.类的实现

#include 
using namespace std;
class Computer{	//class是类的关键字   Computer是类名
public:	//公共权限 ,类内和类外都可以访问
string brand;
string model;
void play_music(){
    cout<<"
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值