C++ 01C++新特性

一、C++新特性

1.c与c++

CC++
面向过程支持面向过程,支持面向对象,支持泛型编程
头文件xxx.hxxx
源文件xxx.cxxx.cpp xxx.C xxx.cxx
编译器gccg++
面向过程编程思路侧重点:过程,函数+函数+函数侧重点:事务,类的设计 对象+对象+对象
优势简单、灵活、效率、底层开发支持面向对象、支持泛型、代码复用、处理大规模问题
简单的C程序:
#include <stdio.h>    //头文件声明
int main(void)        //入口函数
{
     printf("c program\n");
     return 0;   
}

简单的C++程序
#include <iostream>    //头文件声明
using namespace std;
int main(void)         //入口函数
{
    //std::cout<<"C++ program\n";
    cout<<"hello world"<<endl;
    return 0;
}

2.基本概念

面向对象:是一种编程思想,一种软件架构思想
基本原则是程序是由单个能够起到子程序作用的单元或对象组合而成,
以达到软件工程的三个主要目标:重要性、灵活性和扩展性

3.从C到C++

1.更加严格的类型检查
原本在C语言中允许的语法,在C++可能是警告或错误
原本在C语言中的警告,在C++直接就是错误

    char *ptr="hello";
// char*型     const char*   //这里不够严谨,但C语言允许这种做法
    printf("%s\n",ptr);
    
    int *ptr=malloc(32);
//    int*      void*    //这里不够严谨,但C允许
2.cout与cin
 char ch='B';
    cin>>ch;
    cout<<"ch:"<<ch<<endl;


   
    char *str;
    int num;
    cin>>ch>>str>>num;    //以空格、换行、Tab为分隔符
    cout<<"ch:"<<ch<<" str:"<<str<<" num:"<<num<<endl;
    
    字符串的定义和输入:
    char *str;
    cin>>str;    //err
    char str[64];
    cin>>str;    //rig
    char *str=new char;
    cin>>str;    //rig           

3.引用
相比C语言的指针更加的安全和效率
引用:即给变量取别名

int i;
int &r=i;    //给变量i设置一个别名r
    //r改变,i也会改变;i改变,r也会改变
可以用于代替部分指针,提高安全性(不会经常非法访问内存)
C++中传参 : 1.赋值传递 2.传地址 3.传引用
4.内联函数
C++提供一种提高效率的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中
(即适当的用空间换时间)。这种嵌入到主调函数中的函数称为内置函数(inline function),
又称为内嵌函数或内联函数。
它会在调用函数时,将函数在此时展开
语法形式:
    inline 储存类型 数据类型 函数名 (参数列表)
注意:内联函数 一般不宜太复杂(如循环或switch),或存在循环,否则会导致程序过大(过度的空间换时间)    

g++ xx.cpp -E 查看编译过程

5.函数重载
C++允许用同一个函数名定义多个函数,这些函数的参数个数、参数类型不同、顺序。
这就是函数的重载(function overloarding)。即对一个函数名重新赋予它新的含义,
使一个函数可以多用
//eg:两个版本的add调用通过实参来确定到底是哪个版本
int add(int a,int b)
{
    return (a+b);
}
double add(double a,double b)
{
    return (a+b);
}
6.函数参数默认值
C++允许赋予函数参数默认值,即在调用函数时,可以不写某些参数的值,编译器会自动把默认值传递
给调用语句中。
注:1.默认值只能在声明中设置//!!!!!!!!!
    2.注意传参规则,实参给形参传参,是从前往后进行
    3.给函数参数设置默认值,从后往前进行设置
    
int tcpservic_init(const char *ip="0.0.0.0",int port=6666);
调用时:tcpservic_init();
        tcpservic_init("192.168.6.2",7777);
        tcpservic_init("192.168.6.2");
        tcpservic_init(7777);

int fun(char *str="hello",int num);
调用时:fun("world",1); 
      fun("world"); //err
      fun(1);        //err
      
int fun(char *str,int num=6666);
调用时;fun("hello",7777);
        fun("hello");
        fun(7777); //err                     
7.名字空间
全局域
名字空间域:C++在C基础上增加了名字空间域,可以将不同模块的代码设置在不同的名字空间域下
类域
局部域:函数内部

namespace aa;
{
    int i=100;
    void fun()
    {
    cout<<"aa function"<<endl;
    }
}
void main()
{
    aa::fun();
}
------>打印aa funtion
8.new与delete
在C++中用new和delete分别代替,malloc和free
C:
    char *ptr=(char*)malloc(128);    //开辟一个空间放数组
    free(ptr);
C++:
    char *ptr=new char [128];    //new一个数组   //new后面跟类型
    delete[] ptr;    //对于数组释放时使用delete[]

    int *ptr=new int;    //new一个普通变量
    delete ptr;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值