
C++
小白马突突突
我年轻的时候,也曾快马加鞭,看尽长安花
展开
-
C++学习笔记
1、数组的引用存在意义数组本身所含数据量可能很大 但是引用所占内存很小 所以传引用可以节省内存,避免不必要的资源浪费2、即使是返回类型定义为void 的函数 依然可以调用 return; 去提前退出一个函数 注意return 与 分号; 间 无字符原创 2016-03-29 08:07:16 · 516 阅读 · 0 评论 -
clion C++ regex异常
linux 下使用clion 的朋友 可能会碰到这样的问题,某些C++正则表达式会抛出异常,例如C++primer上的一个例子#include #include using namespace std;int main(void) { //查找不在字符 c 之后的字符串 string pattern("[^c]ei"); //我们需要包含pattern的整个原创 2016-08-12 09:47:10 · 1193 阅读 · 0 评论 -
C++ const_cast运算符
const char *pc;char *p=const_cast(pc);const_cast 运算符可以去掉对象的底层 const 性质 但是标准里面说 通过p写值是未定义的行为 我刚开始也觉得既然去掉const 又不能改值 那去掉有什么意义呢?后来才知道 去掉const 不是为了修改const值 而是在作为参数传递给一个带有非const参数的函数时,让编译器原创 2016-03-23 12:56:38 · 405 阅读 · 0 评论 -
C++ 列表初始化
#include using namespace std;int main(void){ int i = 4.3; int i_l = { 4.3 };}列表初始化可能初学者觉得只是初始化数组容器之类可以用到其实在初始化一些内置简单类型 比如 int double float 之类的 也是有用的 可以防止精度隐式转换损失比如 第7行代码 i=4.3原创 2016-03-23 13:29:36 · 426 阅读 · 0 评论 -
C++ 异常处理机制
我刚开始一直搞不懂 throw runtime_error(“error”);这条语句后面括号里的参数有什么意义 我觉得应该是一种错误提示 告诉我们发生了什么错误 可是抛出异常后 并没有看到后面的 “error” 的提示 查阅资料后了解到 后面的 “error"确实是 提示信息, runtime_error是一个异常类型,后面括号字符串 是用来初始化其对象的(应该是下文提到的err)原创 2016-03-27 13:09:28 · 359 阅读 · 0 评论 -
C++ 虚函数
虚函数是面向对象程序设计中的一个重要的概念。只能适用于指针和参考的计算机工程运算。当从父类中继承的时候,虚函数和被继承的函数具有相同的签名。但是在运行过程中,运行系统将根据对象的类型,自动地选择适当的具体实现运行。虚函数是面向对象编程实现多态的基本手段。 ——维基百科当我们使用基类的引用或指针调用基类中定义的一个函数时,我们并不知道该函数真正作用的对象是什么类型,因为它可能是一个基类原创 2016-03-29 22:29:01 · 298 阅读 · 0 评论 -
C++ 调试帮助
1、assert预处理宏 定义在头文件中assert(expr); 对expr求值,若为假,输出信息(表达式,源文件路径,出错代码行数)并终止程序 需要注意的一点是 assert会对表达式求值,如下代码#include #include using namespace std;int main(void){ int a = 1; int b = 2; assert(原创 2016-04-01 07:49:33 · 525 阅读 · 0 评论 -
C++ explicit构造函数
当我们用explicit关键字声明构造函数时,它将只能以直接初始化的形式使用。#include using namespace std;class Person{public: explicit Person(int n) :age(n) { cout << "Person(int n)" << endl; } private: int age;};int main(void)原创 2016-04-06 12:37:26 · 556 阅读 · 0 评论 -
C++ lambda表达式
1、lambda基本概念 ———《C++ primer 5th 389》 一个 lambda 表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。与任何函数类似,一个 lambda 具有一个返回类型、一个参数列表和一个函数体。但与函数不同,lambda 可能定义在函数内部。一个lambda表达式具有如下形式[capture list] (par原创 2016-06-25 20:30:08 · 440 阅读 · 0 评论 -
C++bind函数
1、基本概念bind函数定义在头文件 functional 中。可以将 bind 函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。——《C++Primer p354》原创 2016-06-28 11:28:44 · 2875 阅读 · 0 评论 -
C++插入迭代器
1、插入器基本概念——《C++ primer 5th》 插入器(插入迭代器)是一种迭代器适配器,它接受一个容器,生成一个迭代器,能实现向容器添加元素。当我们通过一个插入迭代器进行赋值时,该迭代器调用容器操作来向给定容器的指定位置插入一个元素。使用前需include 。插入迭代器操作it = t在 it 指定的当前位置插入值 t 。假定 c 是it绑定的容原创 2016-07-25 12:44:56 · 1367 阅读 · 0 评论 -
C++ iostream 迭代器
1、流迭代器将它们对应的流当作一个特定类型的元素序列来处理。通过使用流迭代器,我们可以用泛型算法从流对象读取数据以及向其写入数据。当创建一个流迭代器时,必须指定迭代器将要读写的对象类型。2、istream_iterator2.1、尾后迭代器当我们默认初始化输入流迭代器时,就创建了一个可以当作尾后值使用的空的流迭代器,从而可以当作尾后迭代器来使用,对于一个绑定到流的迭代器,一旦其关联原创 2016-07-25 18:51:38 · 367 阅读 · 0 评论 -
C++引用函数
1、基本概念引用限定符可以是 & 或 &&,可以放在函数参数列表后分别指出this可以指向一个左值或右值。引用限定符只能用于(非static)成员函数,且必须出现在函数的声明和定义中。引用限定符也可以区分重载版本。如果一个成员函数有引用限定符,则具有相同参数列表的所有版本都必须有引用限定符。2、实例演示#include using namespace std;class Ct原创 2016-07-29 20:30:33 · 866 阅读 · 0 评论 -
C++基类成员在派生类中的访问属性
基类成员在派生类中的访问属性基类中的成员在公有派生类中的访问属性在私有派生类中的访问属性在保护派生类中的访问属性private不可访问不可访问不可访问publicpublicprivateprotectedprotectedprotectedprivateprotected原创 2016-08-03 12:25:55 · 1876 阅读 · 0 评论 -
C++ final 和 override 说明符
1、finalSpecifies that a virtual function cannot be overridden in a derived class or that a class cannot be inherited from.——http://en.cppreference.com/它可以指定一个虚函数不能被覆盖或者一个类不能被继承struct Bas原创 2016-09-08 10:50:37 · 644 阅读 · 0 评论 -
C++引用折叠 —— 摘自维基百科
引用折叠规则对于C++语言,不可以在源程序中直接对引用类型再施加引用。T& &将编译报错。C++11标准中仍然禁止上述显式对引用类型再施加引用,但如果在上下文环境中(包括模板实例化、typedef、auto类型推断等)如出现了对引用类型再施加引用,则施行引用塌缩规则(reference collapsing rule)又译作引用折叠规则:T& &变为T&T& &&变为T&T&& &变为原创 2016-08-08 09:13:00 · 592 阅读 · 0 评论 -
C++值的分类 —— 摘自维基百科
在C++11,对于值的分类,要考虑标识(identity)与可移动性(movability),二者的组合产生了五种分类:基础值类型左值lvalue:可以用取地址运算符&获取地址的表达式。也可定义为非临时对象或非成员函数。具有标识,但不可移动。这也是C++03的经典左值。可用于初始化左值引用。可以有不完备类型(incomplete type)。包括:作用域中的变量名与函数名,原创 2016-08-07 18:00:38 · 494 阅读 · 5 评论 -
简单的时间获取程序-unix网络编程
客户端程序#include "unp.h"int main(int argc,char **argv){ int sockfd,n; char recvline[MAXLINE+1]; /* * 网际套接字地址结构 */ struct sockaddr_in servaddr; if(argc!=2) err_q原创 2016-12-18 11:11:21 · 339 阅读 · 0 评论