初识c++

1. 简单介绍c++

首先我觉得c语言都那么难学了,c++从字面意思来讲肯定更hard study。
有关c++的介绍网页上有好多,这里就简单介绍一下:

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
C几乎是C++的一个子集,所有C语言支持的语法在C++基本都支持并需要使用。C plus plus(C++),在C的基础上又有了很多新的特性。如虚函数,运算符重载,多重继承,模板,异常处理,命名空间等。
c++有63个关键字,由于太多就不一一列举了,稍后用到在详解。

这里写图片描述

内置类型:C++中这些基本的数据类型也称为内置类型,也就是语言内部已定义的基本类型。
自定义类型:自己用struct/class/enum/union等定义的就是自定义类型。

2. c++的命名空间

命名空间域解决全局命名冲突的问题.
定义:以关键字namespace开始,其后接命名空间的名字

namespace name1
{
   int a = 0;
}
namespace name2
{
   int a = 1;
}
name1::a = 3;
name2::a = 4;


(1)命名空间可以嵌套。
(2)命名空间的名字在其所在作用域中是唯一的,可以在全局作用域或者其它作用域内部定义,但是不能在函数或者类的内部定义。
(3)命名空间作用域不能以分号结束。
(4)不同命名空间的成员可以具有相同的名字。

3. c++的输入输出:

cout是标准输出流对象,<< 是输出操作符;
cin是标准输入流对象,>>是输入操作符;
endl是换行操作符;
这里说一下c++的浮点数输出:

#include <iostream>
#include <windows.h>
#include "c++.h"
using namespace std;

int main()
{
    int i = 10;
    double d = 1.111111111;
    cout << i << endl; //输出10
    cout << d << endl; //输出1.11111(5位)
    system("pause");
}

那么问题来了,如何全部输出?
答案是:http://c.biancheng.net/cpp/biancheng/view/2227.html(ps脑子小,记不住)

4. 函数重载

函数重载:在同一作用域内,函数名相同,参数列表不同(参数个数与类型),返回值可以相同可以不同。

#include <iostream>
#include <windows.h>

using namespace std;

void Func(int i)
{
    cout << i << endl;
}
void Func(double d)
{   
    cout << d << endl;
}

int main()
{
    Func(10);
    Func(1.11);
    system("pause");
}
int main()
{
    cout<<Add(1,2)<<endl;//3
    cout << Add1(2) << endl;//7
    system("pause");
}

那下面这个函数是否为函数重载呢?

void Func(int i,double d)
{
    cout << i<< endl;
    cout << d << endl;
}
void Func(double d,int i)
{   
    cout << d << endl;
    cout << i << endl;
}

当然是了,两个函数对应位置参数不同。
这里分享一个觉得不错的详解c++重载的博客
http://www.cnblogs.com/skynet/archive/2010/09/05/1818636.html

(面试题)为什么c++支持函数重载,c不支持呢?

解答:这与编译过程有关。c++有函数名修饰规则:函数名+参数类型,支持重载。解决了命名冲突问题。
若有三个文件:test.c main.c test.h生成可执行程序过程为:

  • 预处理: 展开头文件/宏替换/条件编译/去注释 。 生成test.i /main.i
  • 编译: 检查语法,生成汇编代码 。 生成test.s/main.s
  • 汇编: 汇编代码转成机器码 。 生成 test.o/main.o
  • 链接: 链接到一起生成可执行程序。 生成a.out

函数调用时通过符号表查询所需函数的地址进行调用,通过反汇编可以查看此过程。
可在linux中通过g++ 编译文件 ,指令objdump -S a.out 查看 c++编译后发现

void Func(int i) -> _ZFunci
void Func(double d)-> _ZFuncd // 函数名+参数列表
可以改变参数列表测试

5. 缺省函数

规则:只可缺省右边的,必须连续。

//半缺省函数
int Add(int a, int b = 5)
{
    return a + b;
}

//全缺省函数
int Add1(int a = 1, int b = 5)
{
    return a + b;
}

在这函数参数已给定的值相当于备胎。关于备胎就不用解释了吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值