C ++ 程序设计

本文概览

  1. 本文主要是对学习C ++ 时候的一些疑惑进行总结,对于语言中的与其他语言的共同部分,例如流程控制语句,循环等就不再赘述
  2. 相较于一些开发语言如 python,java而言,C++ 的语言偏向于底层,且是在C 语言的基础上建立的,一方面需要有C 语言的基础,另一方面需要对计算机运行程序的具体过程有一个大概的了解,拥有这两方面的基础对于学习C ++有很大帮助
  3. 学习的一些网站,由于C ++ 语言历史悠久,相关的资料也很多

C ++ 特性

  1. 程序运行过程如下图,由于C ++ 是编译型语言,编写完程序后,需要先将程序编译为可执行文件,windows 上通常以.exe结尾,然后再运行就可以了
写程序
编译
可执行文件
运行
  1. C ++ 就是基于 C语言的面向过程然后增加了一些面向对象的编程方式,C 语言中的指针,引用被保留了下来,称为动态分配内存

学习C ++ 的几个问题

  1. 为什么要学 C++?

    1. 因为学业的关系,考这门课程,也是抱着开放的角度去学习这门语言,希望对自己的开发思维有一定的拓展
    2. C ++ 目前在TIOBE 编程语言排行榜上稳定在 3,4名左右,说明很多人都在使用,或者很多人都在了解这门语言
    3. C ++ 最出色的产品是 windows 操作系统,以前的windows系统完全是由C 语言编写的,随着时间的推移,微软更加倾向于使用C++进行编写,C++语言在windows中的比重越来越重
    4. 学习C ++ 能够做什么
    5. 我了解的C++主要是用来写一些windows客户端软件,还有一些基础服务的东西,更重要的是,C++在写游戏方面有着无可比拟的优势
  2. C ++ 和 C 语言是什么关系?

    1. 与其说是两种语言,不如说C ++ 和 C 语言是同一种语言,因为 C ++ 包含 C 语言,C 语言的代码不需要做很大的变动就能直接编译运行
    2. C ++ 对于 C 语言增加了面向对象的编程方式

C ++ 中的一些基础规则

首先看一个C ++代码

	#include <iostream>
	
	//声明命名空间std
	using namespace std;
	
	void func(){
	    cout<<"你好"<<endl;
	}
	
	int main(){
	    cout<<"你好"<<endl;
	    func();
	
	    return 0;
	}

  1. 代码结尾使用;, 代码块使用 {},与大多数语言一致,且代码的缩进不做严格区分
  2. 代码有一个main 函数,作为整个文件的运行入口
  3. 头部引入标准库,cout 就是iostream 这个标准库的成员
  4. 命名空间后面再叙述

面向对象的一些术语

  1. 模板
  2. 向量
  3. 虚函数
  4. 友元函数
  5. 纯虚函数
1. 模板
  1. 强类型语言 C++,两个函数,只有函数名一样,以及形参的类型个数,和类型,返回值的类型,完全一样时,才会冲突,使用函数名一样,形参个数和类型不完全一样的函数被称为多态
  2. 而 python 中,对形参类型和返回值类型不做类型判断,在实现函数时,自带多态性
  3. 模板,就是用来实现像 python 的函数一样的功能
# python 版本
def add_func(a, b):
	return a + b
a = 1
b = 2
print(add_func(a, b))
a = 1.1
b = 2.2
print(add_func(a, b))
#include <iostream>
using namespace std;
template <typename T>
T add_func(T a, T b){
    return a + b;
}

int main(){
    int a = 1;
    int b = 2;
    cout << add_func(a, b) << endl;
    float c = 1.1;
    float d = 2.2;
    cout << add_func(c, d) << endl;
    return 0;
}
2. 向量
  1. 向量是一种类模板,原生的数组是一个指针,而向量表现出与数组相似的功能,功能上却远胜于数组
3. 虚函数
  1. A 是父类,B是子类,当使用A声明一个对象引用自B时,调用一个共有的函数 show时,默认这个对象使用 A 的show函数
# include <iostream>
using namespace std;

class A{
public:
    void show (){
        cout << "the output from A" << endl;
    }
    A(int x, int y){
        cout << x << y;

    };
};
class B: public A{
public:
    void show (){
        cout << "the output from B" << endl;
    }
    B(int x, int y):A(x, y){
        cout << x << y;
    }
};
int main(){

    A a(1, 2);
    B b(3, 4);
    A *c = &b;
    A & d = b;
    c -> show();
    d.show();
    return 0;
}

结果是
123434the output from A
the output from A

  1. 将show 变成虚函数后,结果变成了B,只需要在 A 类的show 函数前面加上 virtual
# include <iostream>
using namespace std;

class A{
public:
    virtual void show (){
        cout << "the output from A" << endl;
    }
    A(int x, int y){
        cout << x << y;

    };
};
class B: public A{
public:
    void show (){
        cout << "the output from B" << endl;
    }
    B(int x, int y):A(x, y){
        cout << x << y;
    }
};
int main(){

    A a(1, 2);
    B b(3, 4);
    A *c = &b;
    A & d = b;
    c -> show();
    d.show();
    return 0;
}

结果是
123434the output from B
the output from B

  1. 具体原理 请点击查看原理文章
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值