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++ 等进行编写。