cpp语言特性

C++ 语言 - cppreference.com
https://zh.cppreference.com/w/cpp/language

C++ 教程 | 菜鸟教程
https://www.runoob.com/cplusplus/cpp-tutorial.html

C++ CPP 中级语言
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

C++标准化:C++98、C++03、C++TR1库扩展2007、数学函数扩展2010、C++11、十进制浮点数扩展2011、C++14、文件系统2015、并行计算扩展2015、事务性内存2015、并发2016、范围2017、协程2017、网络2018、模块2018、图形2019、数组扩展2013废弃……
实验性 C++ 特性 - cppreference.com https://zh.cppreference.com/w/cpp/experimental

c++关键字:
asm (指令字符串):允许在 C++ 程序中嵌入汇编代码。
auto(自动,automatic)是存储类型标识符
explicit:禁止单参数构造函数被用于自动型别转换
export:导入导出模板相关
extern:声明变量或函数为外部链接
friend
inline
mutable易变的
volatile不稳定的
restrict
thread_local多线程相关,线程内的
namespace、using
operator
register
typeid指出指针或引用指向的对象的实际派生类型
c语言的关键字全部继承:const、return、sizeof、typedef
异常:try、catch、throw
循环判断分支:do、while、for、if、else、switch 、case、default、break、continue、goto
基础类型:bool、true、false、char、float、double、int、long、short、signed、union、unsigned、wchar_t、void
类型:enum、private、protected、public、virtual、static、struct、class、template、typename
转换:const_cast、dynamic_cast、reinterpret_cast、static_cast
内存:new、delete、this、

C++ 关键词 - cppreference.com
https://zh.cppreference.com/w/cpp/keyword

数值类型的常量

numeric_limits<char>::max
numeric_limits<char>::min

Lambda 函数与表达式 c++11开始

[capture](parameters) mutable ->return-type{statement}

有public, protected, private三种继承方式,它们相应地改变了基类成员的访问属性。
• 1.public 继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:public, protected, private
• 2.protected 继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:protected, protected, private
• 3.private 继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:private, private, private
但无论哪种继承方式,上面两点都没有改变:
• 1.private 成员只能被本类成员(类内)和友元访问,不能被派生类访问;
• 2.protected 成员可以被派生类访问。

C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

struct MyException : public exception { const char * what () const throw () { return "C++ Exception"; } };//自定义异常
template <class type> ret-type func-name(parameter list) { // 函数的主体 }
template <class type> class class-name {//类主体};

信号处理:
SIGABRT异常终止、SIGFPE算术错误、SIGILL非法指令、SIGINT中断信号、SIGSEGV非法访问内存、SIGTERM程序终止

void (*signal (int sig, void (*func)(int)))(int);//语法
void signalHandler( int signum ) { cout << "Interrupt signal (" << signum << ") received.\n"; // 清理并关闭 // 终止程序 exit(signum); }//信号处理函数定义示例
signal(SIGINT, signalHandler);// 注册信号 SIGINT 和信号处理程序
SIGINT可通过Ctrl+C中断触发。
int raise (signal sig);// 生成信号

多线程,linux下<pthread.h>
pthread_create (thread, thread_attr, start_func, arg) //创建线程
pthread_exit (status) //终止线程
pthread_join (threadid, status) //连接线程
pthread_detach (threadid) //分离线程
pthread_attr_init、pthread_attr_setdetachstate…
linux下的示例:
void* say_hello(void* args){ // 线程的运行函数
    cout << "Hello Runoob!" << endl;
    return 0;
}
    // 定义线程的 id 变量,多个变量使用数组
    pthread_t tids[NUM_THREADS];
    for (int i = 0; i < NUM_THREADS; ++i)
    {
        //参数依次是:创建的线程id,线程参数,调用的函数,传入的函数参数
        int ret = pthread_create(&tids[i], NULL, say_hello, NULL);
        if (ret != 0)
        {
            cout << "pthread_create error: error_code=" << ret << endl;
        }
    }
    //等各个线程退出后,进程才结束,否则进程强制结束了,线程可能还没反应过来;
pthread_exit(NULL);

c++11的多线程<thread>
#include 
#include 
std::thread::id main_thread_id = std::this_thread::get_id();
void hello()
{
    std::cout << "Hello Concurrent World\n";
    if (main_thread_id == std::this_thread::get_id())
        std::cout << "This is the main thread.\n";
    else
        std::cout << "This is not the main thread.\n";
}

void pause_thread(int n) {
    std::this_thread::sleep_for(std::chrono::seconds(n));
    std::cout << "pause of " << n << " seconds ended\n";
}

int main() {
    std::thread t(hello);
    std::cout << t.hardware_concurrency() << std::endl;//可以并发执行多少个(不准确)
    std::cout << "native_handle " << t.native_handle() << std::endl;//可以并发执行多少个(不准确)
    t.join();
    std::thread a(hello);
    a.detach();
    std::thread threads[5];                         // 默认构造线程

    std::cout << "Spawning 5 threads...\n";
    for (int i = 0; i < 5; ++i)
        threads[i] = std::thread(pause_thread, i + 1);   // move-assign threads
    std::cout << "Done spawning threads. Now waiting for them to join:\n";
    for (auto &thread : threads)
        thread.join();
    std::cout << "All threads joined!\n";

    return 0;
}

join阻塞执行
detach独立执行

std::this_thread::sleep_for(std::chrono::seconds(1));

c++ web
公共网关接口(CGI),是使得应用程序(称为 CGI 程序或 CGI 脚本)能够与 Web 服务器以及客户端进行交互的标准协议。这些 CGI 程序可以用 Python、PERL、Shell、C 或 C++ 等进行编写。

你可能感兴趣的:(cpp)