![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习
醉等佳人归
这个作者很懒,什么都没留下…
展开
-
C++之命名空间
文章目录命名空间定义使用命名空间命名空间可以是不连续的大型程序往往会使用多个独立开发的库,这些库又会定义大量的全局名字,如类、函数和模板等。当应用程序用到多个供应商提供的库时,不可避免地会发生某些名字相互冲突的情况。多个库将名字放置在全局命名空间中将引发命名空间污染(namespace pollution)。命名空间( namespace)为防止名字冲突提供了更加可控的机制。命名空间分割了全局命名空间,其中每个命名空间是一个作用域。通过在某个命名空间中定义库的名字,库.的作者(以及用户)可以避免全局名字原创 2020-06-15 19:41:55 · 121 阅读 · 0 评论 -
C++之标准库特殊设施
文章目录tupletuple基本操作bitset类型定义和初始化bitsetbitset的操作tupletuple基本操作typedef decltype (item) trans; // trans 是item的类型.//返回trans类型对象中成员的数量size_ t sz = tuple_ size<trans>: :value; //返回3// cnt的类型与item中第二个成员相同tuple_ element<1, trans>::type cnt = ge原创 2020-06-14 22:28:19 · 168 阅读 · 0 评论 -
C++之模板与泛型编程
文章目录定义模板函数模板类模板类模板与友元类模板与static模板实例化函数实例化定义模板函数模板template <typename T>int compare (const T &v1, const T &v2){ if (v1 < v2) return -1; if (v2 < v1) return 1; return 0;}当我们调用一个函数模板时,编译器用函数实参来为我们推断模板实参。cout<<compare(1,0)&l原创 2020-06-13 19:42:26 · 135 阅读 · 0 评论 -
C++之重载运算与类型转换
文章目录基本概念输入和输出运算符重载输出运算符重载输入运算符赋值运算符算术和关系运算符算数运算符相等运算符下标运算符递增和递减运算符基本概念重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成。和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。对于一个运算符函数来说,它或者是类的成员,或者至少含有一个类类型的参数当一个重载的运算符是成员函数时,this绑定到左侧运算对象。成员运算符函数的(显式)参数数量比与运算对象的数量少一个当我们定义重原创 2020-06-10 22:49:31 · 396 阅读 · 0 评论 -
c++之拷贝控制
文章目录引言拷贝、赋值与销毁拷贝构造函数引言当定义一个类时,我们显式地或隐式地在此类型的对象拷贝、移动、复制和销毁时做什么。一个类通过定义五种特殊的成员函数来控制这些操作,包括:拷贝构造函数拷贝赋值运算符移动构造函数移动复制运算符析构函数拷贝、赋值与销毁拷贝构造函数class Foo{public: Foo(); Foo(const Foo&);};拷贝构造函数的第一个参数必须是一个引用类型,虽然我们可以定义一个接受非const引用的拷贝构造函数,但此参数几乎总原创 2020-06-09 12:11:45 · 387 阅读 · 0 评论 -
C++之动态内存与智能指针
文章目录头文件shared_ptr和unique_ptr支持的操作头文件#include <memory>shared_ptr和unique_ptr支持的操作原创 2020-05-30 19:28:51 · 181 阅读 · 0 评论 -
C++之泛型算法
文章目录只读算法写容器元素算法消除重复单词算法只读算法(1)accumulate返回容器的和int sum = accumulate(vec.cbegin(),vec.cend(),0);string sum = accumulate(v.cbegin(),v.cend(),string(""));//注意第三个参数不接受"",因为const char*类型没有重载“+”会编译错误(2)equal比较两个等长的容器(元素个数相同)是否保存相同的值equal(vec1.cbegin(),vec1原创 2020-05-24 22:11:20 · 190 阅读 · 0 评论 -
C++之类
文章目录可变数据成员返回*this指针(返回调用函数对象的引用)的妙用可变数据成员有时会发生这样一种情况,我们希望能修改类的某个数据成员,即使在一个const成员函数内,可以通过在变量的声明中加入mutable关键字做到这一点。mutable int test;void GetTest() const{ ++test;}返回*this指针(返回调用函数对象的引用)的妙用(1)*this指针可以将几个操作压缩在一个序列中class Screen{public: Screen&原创 2020-05-23 18:26:50 · 144 阅读 · 0 评论 -
C++之函数深究
文章目录函数返回值为数组指针const_cast和重载函数返回值为数组指针一共有三种写法,如下://onetypedef int arrT[10];arrT* func(int i);//twoauto func(int i) -> int(*)[10];//threeint odd[5] = {1,3,5,7,9};decltype(odd) *arrPtr(int i);const_cast和重载//版本1const string &shorter(const原创 2020-05-13 20:27:30 · 99 阅读 · 0 评论 -
C++之const
文章目录const的作用范围constexpr变量const的作用范围const对象被设定为仅在文件内有效。当多个文件中出现了同名的const变量时,其实等同于在不同文件中分别定义了独立的变量。可以通过extern关键字使得他在多个文件中生效。extern const int bufSize;constexpr变量C++11新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化c原创 2020-05-12 21:00:51 · 116 阅读 · 0 评论