• [C++] * Basic and Class


    C++

     

    目  录

    1 开始学习C++ 4

    1.1 C++的头文件 4

    1.2 命名空间 4

    1.3 更严格的类型转化 4

    1.4 new和delete 4

    1.5 内联函数 4

    1.6 引用 5

    1.7 函数的重载 5

    2 类和对象 6

    2.1 C++类成员 的保护 6

    2.2 C++类的本质 6

    2.3 类的作用域 6

    2.4 类的构造和析构函数 6

    2.5 构造函数的初始化成员列表 6

    2.5.1 原则: 7

    2.6 拷贝构造函数 7

    2.6.1 浅拷贝 7

    2.6.2 深拷贝 7

    2.6.3 原则: 8

    2.7 常量类成员,常量对象。 8

    2.8 explicit 8

    2.9 this指针 8

    2.10 类的static成员变量 8

    3 C++封装与移植训练 9

    3.1 UDP协议 9

    3.2 C和C++混合编程 11

    3.3 makefile 12

    3.3.1 gcc编译过程 12

    3.3.2 gcc参数 12

    1 开始学习C++

    1.1 C++的头文件

    传统的C头文件。

    C++头文件

    hpp文件

    1.2 命名空间

    C++引入了新的概念,命名空间可以有效避免大型项目中的各种名称冲突

    class关键字

    classC++的核心,是面向对象编程的核心内容

    1.3 更严格的类型转化

    C++,不同类型的指针是不能直接赋值的,必须强转

    1.4 newdelete

    newdeleteC++内建的操作符,不需要有任何头文件,new分配的内存必须用delete释放,不要用free

    new创建数组的方法new[];

    1.5 内联函数

    inline关键字的意思是,内联函数不作为函数调用,而是直接把内联函数的代码嵌入到调用的语句中

    内联函数适合函数代码很少,并且频繁的大量调用。

    1.6 引用

    引用就是一个变量的别名,而不是地址

    函数的缺省参数

    C++允许函数在定义的时候,提供缺省参数,如果调用函数的时候没有提供形参,那么形参的值就是缺省值

    引用做为函数的参数,没有出栈,入栈操作,所以效率更高

    如果要使引用参数的值不能在函数内部被修改,那么就定义为常量引用 const &

     

    1.7 函数的重载

    函数的名称是一样的,但参数不同可以重载

    函数参数相同,但返回值不同,不可以重载

    2 类和对象

    2.1 C++类成员的保护

    如果类函数返回的是成员变量的指针,为了避免在类外部成员变量被修改,所以函数就要返回常量指针

    如果一个类成员变量和一个全局变量重名,那么在类成员函数当中默认访问的是类的成员变量.

    在类的内部访问全局标识,关键字::

    2.2 C++类的本质

    类其实就是结构的数据成员加可执行代码,统一提供封装,继承,多态。

    在类内部,没有权限限定符,默认是private

    在结构内部,没有权限限定符,默认是public

    2.3 类的作用域

    类成成员变量作用域局限于类内部,类的外部是不可见。

    2.4 类的构造和析构函数

    构造函数名称和类的名称一致,而且没有返回值

    一个类实例化为一个对象的时候,自动调用。

    一个对象在销毁的时候会自动调用析构函数。

    2.5 构造函数的初始化成员列表

    初始化成员列表只能在构造函数使用

    const成员必须用初始化成员列表赋值

    引用数据成员必须用初始化成员列表赋值

    2.5.1 原则:

    由于析构函数只有一个,所以在不同的构造函数里面给函数的成员指针分配内存的时候,一定要统一new或者new[]

    2.6 拷贝构造函数

    2.6.1 浅拷贝

    两个对象之间成员变量简单的赋值。

     

    2.6.2 深拷贝

    不同的对象指针成员指向不同的内存地址,拷贝构造的时候不是简单的指针赋值,而是将内存拷贝过来。

    2.6.3 原则:

    如果类成员有指针,那么需要自己实现拷贝构造函数,不然存在浅拷贝的风险。

    2.7 常量类成员,常量对象。

    类成员后面跟关键字const意思是告诉编译器,这个函数内部不会对类成员变量做任何修改

    函数的参数如果是一个类,那么就用类的引用。如果不想参数被调用函数内部修改,那么就采用const &

    2.8 explicit

    告诉C++编译器,要明确的调用这个构造函数,而不要自作聪明的认为=操作符是要调用构造的。

    2.9 this指针

    this就是指向自己实例的指针

    2.10 类的static成员变量

    static变量是放到静态内存区的,程序加载就存在,一直到程序退出才清理。

    类的static成员和类的对象没有直接关系,类的静态成员是放到静态内存区的,程序开始执行就存在,一直到程序结束才清理。

    类的静态成员变量不论类的实例有多少,但成员变量只有一份

    3 C++封装与移植训练

    3.1 UDP协议

    TCP/IP

    UDP协议是基于IP

    socket把网络协议用C语言封装成一个个函数,放到dll,供其他语言调用,

    阻塞,一个函数在没有返回之前,程序被挂起.

    recvfrom就是一个阻塞的函数

    网络是字节流,发送是以字节为单位的,如果大于一个字节的数据类型通过网络发送的时候必须调用htons或者htonl函数将数据转化为正确的网络字节流才能发送

    windows底层的socketWs2_32.lib

    127.0.0.1,这个IP地址就代表自己。

    0,代表自己

    255广播

    192.168.6.1 192.168.6.254

    3.2 CC++混合编程

    对于C语言来讲,编译完成之后函数的名称不会改变,对于C++来讲函数的名称发生变化

    如果是C代码中的函数,在C++中使用一定要用extern “C”关键字来说明

    对于操作系统来讲,一定要避免两个程序同时绑定到一个端口。

    3.3 makefile

    3.3.1 gcc编译过程

    3.3.2 gcc参数

    -o 指定输出文件名

    -c 只编译,不链接

    -E预编译

    make是根据.cpp.o文件的最后修改日期判断cpp文件是否需要编译。如果.o文件不存在,make会失去判断条件,那么一定会编译cpp文件。

     

    unixso文件一定要以lib开头,以so结尾

    gcc参数-iPIC生成和位置无关的代码,

  • 相关阅读:
    概率图模型(CPD)(二)
    概率图模型(贝叶斯网络)(一)
    EM算法理论与推导
    关于无向图的最大团的问题。
    机器学习实战基础(四十二):逻辑回归之 1 概述
    条件独立性
    pl/sql的tnsnames.ora文件配置
    eclipse修改SVN账号密码
    Centos安装
    Linux虚拟机安装
  • 原文地址:https://www.cnblogs.com/tianhangzhang/p/4894227.html
Copyright © 2020-2023  润新知