c++的概述

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

1、 第一个c++程序:

#include <iostream>

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 = "<<num<<endl;

    return 0;
}

 

 2、面向过程和面向对象

1、面向过程:

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

程序=数据结构+算法

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

2、面向对象: 

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

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

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

 封装

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

 继承

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

多态 

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

c++对c的扩展之::

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

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


#include <iostream>

using namespace std;

int a = 10;

void tets()
{
   int a = 20;
   cout<<"局部变量:a = "<<a<<endl;
   //::a显示使用全局变量
   cout<<"全局变量:a = "<<::a<<endl; 

}

int main(int argc,  char *argv[])
{
   
    tets(); 
    
    return 0;
}

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

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

1、命名空间的定义

namespace  命名空间名

{

        //打包的数据 和 函数

 }

#include <iostream>

using namespace std;

namespace A{
    int data1 = 10;
}

namespace B{

    int data1 = 20;
}

int main(int argc, char const *argv[])
{
    //加作用域 是最安全最简单的方法
    cout<<" data = "<<A::data1<<endl;  //10
    cout<<" data = "<<B::data1<<endl;   //20

    return 0;
}

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

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

#include <iostream>

using namespace std;

namespace A{
    int a = 10;

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


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

    return 0;
}

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

#include <iostream>

using namespace std;

namespace A{
    int a = 10;
}

namespace A{

    void func()
    {
        cout<<"hello namespace!"<<endl;
    }
}

int main(int argc, char const *argv[])
{
    cout<<"A::a :"<<A::a<<endl;
    A::func();
    
    return 0;
}

 5、声明和实现可分离

#include <iostream>

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::get_a()<<endl;
    return 0;
}

 6、无名命名空间

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

#include <iostream>

using namespace std;

namespace{

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

int main(int argc, const char** argv) {

    cout<<"a : "<<a<<endl;
    func();
    return 0;
}

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

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

7、命名空间别名

#include <iostream>

using namespace std;

namespace veryLongName{

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

int main(int argc, char const *argv[])
{
    namespace newName = veryLongName;
    cout<<"veryLongName::a :"<<newName::a<<endl;
    veryLongName::func();
    newName::func();
    return 0;
}

 

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

#include <iostream>

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 = "<<a<<endl;

    return 0;
}

9、using声明碰到函数重载

#include <iostream>

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 A::func;


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

    return 0;
}

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

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

#include <iostream>

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 = "<<a<<endl; //10

    //不会冲突
    int a = 100;
    cout<<"a = "<<a<<endl;//100就近原则
 
    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值