c++的概述

c++是面向对象、泛型编程。

1、 第一个c++程序:

#include 

using namespace std;

int main(int argc,  char *argv[])
{

    //cout代表终端输出设备  endl换行
    cout << "Hello World! " << endl;
    cout << 100 << endl;
    std::cout<< 'h' << endl;

    //cin代表终端输入设备
    int num;
    //scanf("%d",%num)   c语言的输入
    std::cin >> num;
    cout<<"num = "<

 c++的概述_第1张图片

 2、面向过程和面向对象

1、面向过程:

面向过程是一种以过程为中心的编程思想,其原理就是将问题分解成一个一个详细的步骤,然后通过函数实现每一个步骤,并依次调用。
面向过程我们所关心的是解决一个问题的步骤,举个例子,汽车发动、汽车熄火,这是两个不同的事件,对于面向过程而言,我们关心的是事件本身,因此我们会使用两个函数完成以上两个动作,然后依次调用即可。

程序=数据结构+算法

算法:对数据的操作步骤(查找、排序)

2、面向对象: 

面向对象则是一种以对象为中心的编程思想,就是通过分析问题,分解出一个一个的对象,然后通过不同对象之间的调用来组合解决问题。建立对象的目的不是为了完成某个步骤,而是为了描述某个事物在解决整个问题的过程中的行为。
如上面的例子,汽车发动、汽车熄火,对于面向对象而言,我们则关心的是汽车这类对象,两个事件只是这类对象所具备的行为。

对象 = 算法 + 数据结构 程序 = 对象 + 对象 + ……

 

3、c++的三大特性:封装、继承、多态

 封装

数据和方法封装在一起,加以权限区分,用户只能通过方法操作自身的数据。 数据:成员数据  方法:成员函数

 继承

继承所表达的是类之间相关的关系,这种关系使得对象可以继承另外一类对象的 特征 和能力。 继承的作用:避免公用代码的重复开发,减少代码和数据冗余

多态 

多态性可以简单地 概括为“一个接口,多种方法”,字面意思为多种形态。程序在运 行时才决定调用的函数,它是面向对象 编程领域的核心概念。

 

c++对c的扩展之::

1、作用域运算 ::   (解决的是 归属问题)

如果局部和全局同名 可以直接访问全局变量


#include 

using namespace std;

int a = 10;

void tets()
{
   int a = 20;
   cout<<"局部变量:a = "<c++的概述_第2张图片

 

c++对c的扩展之命名空间

在c++中,名称(name)可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大,名称互相冲突性的可能性越大。另外使用多个厂商的类库时,也可能导致名称冲突。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入关键字namespace(命名空间/名字空间/名称空间),可以更好地控制标识符的作用域。

1、命名空间的定义

namespace  命名空间名

{

        //打包的数据 和 函数

 }

#include 

using namespace std;

namespace A{
    int data1 = 10;
}

namespace B{

    int data1 = 20;
}

int main(int argc, char const *argv[])
{
    //加作用域 是最安全最简单的方法
    cout<<" data = "<c++的概述_第3张图片

 2、命名空间只能全局范围内定义(以下错误写法)

c++的概述_第4张图片

 3、命名空间可嵌套命名空间

#include 

using namespace std;

namespace A{
    int a = 10;

    namespace B{   //命名空间嵌套
    int a= 20;
   }  
}


int main(int argc, char const *argv[])
{
   
    cout<<"A::a : "<

c++的概述_第5张图片

4、命名空间是开放的,即可以随时把新的成员加入已有的命名空间中

#include 

using namespace std;

namespace A{
    int a = 10;
}

namespace A{

    void func()
    {
        cout<<"hello namespace!"<

c++的概述_第6张图片

 5、声明和实现可分离

 

#include 

using namespace std;

namespace C{
    int a;
    void set_a(int data);
    int  get_a();
}
void C::set_a(int data)
{

    a = data;
    return;
}

int C::get_a()
{
    return a;
}

int main(int argc, char const *argv[])
{
    C::set_a(100);
    cout<<"a = "<

c++的概述_第7张图片

 6、无名命名空间

无名命名空间里面的数据和方法 只能在当前源文件使用 就类似加static修饰

#include 

using namespace std;

namespace{

    int a = 10;
    void func()
    {
        cout<<"hello namespace!"<

c++的概述_第8张图片

 内部连接:只在当前源文件用

 外部连接:可以在其他源文件使用

 

7、命名空间别名

#include 

using namespace std;

namespace veryLongName{

    int a = 10;
    void func()
    {
        cout<<"hello namespace"<

 c++的概述_第9张图片

 

8、using 是修饰 命令空间 里面的 某些数据或方法

#include 

using namespace std;

namespace D{

    int a = 10;

}

int main(int argc, char const *argv[])
{
    //下列出现的a来自D命名空间
    using D::a;

    //防止同名  否则报错
    //int a = 20;    
     cout<<"a = "<

c++的概述_第10张图片

 

9、using声明碰到函数重载

#include 

using namespace std;

namespace A{

    void func(){}
    void func(int x){}
    void func(int x,int y){}
}

int main(int argc, char const *argv[])
{
    //下列出现的func来自A命名空间
    using D::func;


     func();
     func(10);
     func(10,20);

    return 0;
}

如果命名空间包含一组用相同名字重载的函数,using声明就声明了这个重载函数的所有集 合

 

10、using 是修饰 整个命名空间

#include 

using namespace std;

namespace D{

    int a = 10;
    int b = 20;
    int c = 30;
}

int main(int argc, char const *argv[])
{   
    //声明识别整个命名空间 里的数据和方法
    using namespace D;//强调的是命名空间名

    //先查看当前普通变量a 如果没有 再查看命名空间中有没有a
    cout<<"a = "<c++的概述_第11张图片

 

你可能感兴趣的:(c++,开发语言)