![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ Primer 笔记
轻菜头
我就是我,不一样的烟火。
展开
-
复制控制
复制构造函数,赋值操作符,析构函数总称为赋值控制。编译器自动实现这些操作,但类设计者也可以定义自己的版本。类具有指针成员时,类必须定义自己的复制控制成员。1.复制构造函数只有单个形参,且该形参为本类类型对象的const引用。复制构造函数的作用有: 根据另一个同类型的对象初始化一个对象 函数形参或返回类型为类对象时,调用复制构造函数 容器或数字里是类对象时,调用复制构原创 2017-06-23 11:41:19 · 161 阅读 · 0 评论 -
C++单例模式(懒汉和饿汉)与线程安全,模板单例
本想写一下C++单例模式的懒汉和饿汉模式的实现,并讨论懒汉模式下的线程安全问题,发现下面的文章写的很明白了,这里引用一下,不做具体介绍了。https://blog.csdn.net/hj605635529/article/details/70172842 下面这篇博客介绍了单例模式的模板化过程,讲的很透彻:https://www.cnblogs.com/myd620/p/6133420...原创 2019-01-07 18:56:27 · 603 阅读 · 0 评论 -
C标准库string.h源码八:memcmp/memset/memchr
int memcmp(const void *cs, const void *ct, size_t count){ const unsigned char *su1, *su2; int res = 0; for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--) if ((res = *s...原创 2019-01-05 21:42:21 · 355 阅读 · 0 评论 -
C标准库string.h源码实现七memcpy/memmove
void *memcpy(void *dst, const void *src, size_t count){ void * ret = dst; while (count--) { *(char *)dst = *(char *)src; dst = (char *)dst + 1; src = (char *)src + 1...原创 2019-01-05 18:30:26 · 368 阅读 · 2 评论 -
C标准库string.h源码六:strspn/strcspn/strpbrk/strtok
size_t strspn(const char *str, const char * accept);【函数说明】strspn() 从参数 str 字符串的开头计算连续的字符,而这些字符都完全是 accept 所指字符串中的字符。简单的说,若 strspn() 返回的数值为n,则代表字符串 str 开头连续有 n 个字符都是属于字符串 accept 内的字符。【返回值】返回字符串 st...原创 2019-01-05 16:47:26 · 547 阅读 · 0 评论 -
C标准库string.h源码五:strchr/strrchr/strstr
char *strchr(const char *s, int c); //返回一个字符指针,它指向c在s中首次出现的位置,如果未找到,返回NULL char *strrchr(const char *s, int c);//返回一个字符指针,它指向c在s中最后出现的位置,如果未找到,返回NULL char *strchrnul(const char *s, int c);//若c在s中,同...原创 2019-01-05 14:48:16 · 566 阅读 · 0 评论 -
C标准库源码四:strcmp/strncmp
/*strcmp - compare two strings, returning less than, equal to, or greater thanPurpose: Compares two string, determining their lexical order. Unsigned comparison is used.return < ...原创 2019-01-05 14:35:47 · 602 阅读 · 0 评论 -
C标准库string.h源码三strcat/strncat
/*char *strcat(dst, src) - concatenate (append) one string to anotherPurpose: Concatenates src onto the end of dest. Assumes enough space in dest.*/char * strcat (char * dst, c...原创 2019-01-05 14:18:31 · 352 阅读 · 0 评论 -
C标准库string.h源码二:strcpy/strncpy
char * strcpy (char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ != '\0') ; /* Copy src over dst */ return( dst );}/* glibc 实现 Copy SRC to D...原创 2019-01-05 14:12:57 · 408 阅读 · 0 评论 -
重载操作符与转换
重载操作符是具有特殊名称的函数:保留字operator后接需定义的操作符符号。 重载操作符必须具有一个类类型的操作数 重载操作符的优先级和结合性是固定的 重载操作符不具备短路求值特性 当重载操作符作为成员函数时,其隐含的this指针限定为第一个操作数,一般将赋值操作符定义为成员函数,算术和关系操作符定义为友员函数。=,[], ->,()一般只能定义为成员函数,改变对象状态如自增,自减,解引用原创 2017-06-23 15:27:22 · 273 阅读 · 0 评论 -
深入理解printf函数的实现
先看glibc中printf函数的实现源码:#include <ansidecl.h>#include <stdarg.h>#include <stdio.h>/* Write formatted output to stdout from the format string FORMAT. *//* VARARGS1 */int prin...原创 2019-01-09 11:22:34 · 12188 阅读 · 2 评论