C++快速入门扫盲总结

C++快速入门扫盲总结

  • C++语言新特性
    • C++的新特性
    • C++的输入输出方式
    • C++之命名空间namespace
  • C++面向对象
    • 类和对象
      • 构造函数与析构函数
      • this指针
    • 继承
    • 重载
      • 函数重载
      • 运算符重载
    • 多态
    • 数据封装
    • 数据抽象
    • 接口(抽象类)

C++语言新特性

C++的新特性

C++比 C 语言新增的数据类型是布尔类型(bool)。 但是在新的 C 语言标准里已经有布尔类型了,但是在旧的 C 语言标准里是没有布尔类型的,编译器也无法解释布尔类型。
在传统的 C 语言里,变量初始化时必须在程序的前面定义在前面, 而 C++则是可以随用随定义。 C++也可以直接初始化,比如 int x(100);这样就直接赋值 x=100,这些都是 C++特性的好处。 这里只说这些常用的新特性,其他特性不做描述或者解释了。

C++的输入输出方式

在C语言中,我们是这样输入或者输出的。
C++快速入门扫盲总结_第1张图片
在 C++里,我们使用以 cin 和 cout 代替了 scanf 和 printf。在输入和输出的流程上是不变的,只是关键字变了,用法也变了。
C++快速入门扫盲总结_第2张图片
要说效率上,肯定是 C 语言的 scanf 和 printf 的效率高, 但是没有 C++中的 cin 和 cout 使用方便。

C++之命名空间namespace

#include <iostream>    //无.h的是标准输入输出流要用命名空间

using namespace std;

int main()
{
   
    cout << "Hello World!" << endl;
    return 0;
}

/***********************输出结果:****************************/
Hello World!

下面通过一个简单的例子来介绍自定义的命名空间和使用自定义的命名空间。

#include <iostream>    //无.h的是标准输入输出流要用命名空间

using namespace std;

//自定义了命名空间 A,里面定义了一个变量 x,并将 x 赋值为 1;定义了一个函数fun(),并在 fun()加了输出打印语句 cout<<"A namespace"<
namespace A {
   
    int x = 1;
    void fun( ) {
   
        cout <<"A namespace" <<endl;
    }
}

using namespace A; //声明使用命名空间A。

int main()
{
   
    fun();     //在第 11 行声明了命名空间 A 后, 才能直接使用 fun();否则要写成 A::fun();
    A::x = 3;  //将 A 命名空间下的 x 重新赋值为 3。
    cout << A::x << endl;   //打印出 A 命名空间下的 x 的值。
    A::fun();  //调用 A 命名空间下的 fun()。
    return 0;
}


/***********************输出结果:****************************/
A namespace
3
A namespace

C++面向对象

面向对象的三大特征是继承,多态和封装。

类和对象

C++ 在 C 语言的基础上增加了面向对象编程, C++ 支持面向对象程序设计。类是 C++的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。

#include <iostream>    //无.h的是标准输入输出流要用命名空间
#include <string>
using namespace std;

//定义了一个 Dog类
class Dog {
   

public:
    //访问限定符 public(公有的), 此外还有 private(私有的) 和 protected(受保护的),不写访问限定符默认是 private
      string name;
      int age;

      void run () {
   
          cout << "小狗的名字是:"<< name << "," << "年龄是" << age <<endl;
      }
};

int main()
{
   

    Dog dog1;  //从栈中实例化一个对象 dog1

    dog1.name = "旺财";
    dog1.age = 2;
    dog1.run();

    Dog *dog2 = new Dog();   //从堆中实例化对象,使用关键字 new 的都是从堆中实例化对象。
    //从堆中实例化对象需要开辟内存,指针会指向那个内存,如果 new 没有申请内存成功, dog2 即指向 NULL, 程序就自动退出,下面的就不执行了,写这个是为了严谨
    if (NULL == dog2) {
   
        return 0;
    }
    dog2 -> name = "富贵";
    dog2 -> age = 1;
    dog2 -> run();

    //释放内存,将 dog2 重新指向 NULL
    delete dog2

你可能感兴趣的:(C/C++,Qt)