C++
记录C++的知识点
贾专家
这个作者很懒,什么都没留下…
展开
-
C++萃取的实现
#include <iostream>#include<string.h>using namespace std; template<typename T>struct my_is_pod{ static bool value; }; template<typename T>bool my_is_pod<T>::value = false;template<>struct my_is_pod<in原创 2024-04-24 08:45:15 · 74 阅读 · 0 评论 -
C++的引用符号
#include<iostream>using namespace std;void swap3(int &pa, int &pb);int main(){ int x = 4; int y = 6; swap3(x, y); cout << "x = " << x << ", y = " << y << endl; return 0; } void swap3(int &原创 2024-02-26 09:01:04 · 385 阅读 · 0 评论 -
C++枚举enum
#include<iostream>using namespace std;//enum day{mon, thu = 2, wen};//完全写法 //enum class day:unsigned int {mon, thu, wen};//简写方法1//enum class day{mon, thu, wen};//简写方法2,没有创造命名空间 enum day{mon, thu, wen}; int main(){ day d1; d1 = day:原创 2024-02-26 09:00:48 · 109 阅读 · 0 评论 -
C++中子类和父类的兼容关系
C++中子类和父类的兼容关系子类是父类的超集,子类相当于可以裁剪成父类。按照这个逻辑,子类可以当父类来用,所输出的内容是父类的内容。#include<iostream>using namespace std;//定义父类class Person{public: int age; Person(){}; Person(int age); void speak(void);};//定义子类class Man:public Person{public: int原创 2024-02-26 08:58:59 · 228 阅读 · 0 评论 -
set的三种遍历
#include <iostream>#include<set>#include<algorithm>using namespace std; int main(void){ set<string> s1; s1.insert("cat"); s1.insert("dog"); s1.insert("horse"); //set的第一种遍历方法ranged_for for(auto s: s1) { cout <<原创 2024-02-26 08:58:36 · 225 阅读 · 0 评论 -
类模板特化示例
// 结论优先级:普通函数 > 模板函数的特化版本 > 模板函数的泛化版本 #include<iostream>#include<algorithm>using namespace std;template <typename T>class People{public: void func(T a) { cout << "in People func(T a),a = " << a << end原创 2024-02-26 08:57:22 · 93 阅读 · 0 评论 -
模板特化简单示例
// 结论优先级:普通函数 > 模板函数的特化版本 > 模板函数的泛化版本 #include<iostream>#include<algorithm>using namespace std;template <typename T>bool GreaterThan(T a, T b){ if(a > b) { return true; } else { return false; }}//对GreaterTha原创 2024-02-26 08:56:40 · 70 阅读 · 0 评论 -
lambda表达式
#include <array>#include <iostream>#include<algorithm>#include <iterator>using namespace std; int main(void){ [](){}(); [](){cout << "hello" << endl; }(); [](int i){cout << i << endl;}(5); auto原创 2024-02-26 08:56:20 · 108 阅读 · 0 评论 -
C++谓词
#include <array>#include <iostream>#include<algorithm>using namespace std; /*bool IsGreater(int a){ return a > 0;}*/// 用函数对象实现 class MyGreater{public: bool operator()(const string &s1, const string &s2) { r原创 2024-02-26 08:55:59 · 83 阅读 · 0 评论 -
C++的array容器类
定义array#include<iostream>#include<array>#include<string>using namespace std;int main(){ array<int, 3> a1; //定义了,但是没有初始化 array<int, 3> a2{1, 3 ,5}; //定义并初始化 array<int, 3> a3 = {1, 3 ,5}; //和第二种方法是一样的 arr原创 2024-02-26 08:55:34 · 78 阅读 · 0 评论 -
C++模板继承1
单参数模板继承#include<iostream>#include<string>using namespace std;template <typename T> class Person{public: T x;public: Person(){}; Person(T a):x(a){}; void print(void); };template <typename Ty> class Man:public Perso原创 2024-02-26 08:55:09 · 162 阅读 · 0 评论 -
C++模板运算符重载
#include<iostream>#include<string>using namespace std;template <typename T> class Person{private: T age;public: Person(){}; Person(T a); //运算符+ Person<T> operator+(const Person<T>& other); //运算符+= Pe原创 2024-02-25 16:05:26 · 210 阅读 · 0 评论 -
C++类模板
#include<iostream>#include<string>using namespace std;//定义模板类template <typename T> class People{private: int age; public: People(){}; People(int a); void print(T x); }; template <typename T> People<T>::Peo原创 2024-02-25 16:05:10 · 201 阅读 · 0 评论 -
C++友元函数模板
#include<iostream>#include<string>using namespace std;//必须类和友元函数都要前置声明template <typename T1, typename T2> class Person;template <typename T1, typename T2> void print(const Person<T1, T2>& pn);template <typenam原创 2024-02-25 16:04:55 · 218 阅读 · 0 评论 -
C++友元函数
外部友元函数#include<iostream>#include<string>using namespace std;class Person{private: int age;protected: int height;public: string name; Person(){}; Person(int age, int height, string name); friend void dis_info(Person &pn);}原创 2024-02-25 16:04:32 · 102 阅读 · 0 评论 -
C++static静态成员用法
#include<iostream>using namespace std;class Person{public: int age; static int height; static void print(int age);};// 静态成员变量和普通成员变量的区别是:静态成员变量需要在类的外面重新定义 int Person::height = 23;void Person::print(int age){// cout << "age = "原创 2024-02-25 15:58:40 · 181 阅读 · 0 评论 -
C++运算符重载示例
#include<iostream>using namespace std;class coordinate{public: int x; //x坐标 int y; //y坐标 coordinate(); //默认构造函数1 coordinate(int x0, int y0); //重载构造函数2 void print(void); //打印属性信息函数声明 //定义运算符+的重载 coordinate operato原创 2024-02-25 15:58:30 · 120 阅读 · 0 评论 -
C++拷贝构造函数
#include<iostream>#include<string>using namespace std;class Person{public: string name; int age; bool male; int *pInt; Person(){}; Person(string name, int age, bool male); //拷贝构造函数声明,拷贝构造函数的重点 Person(const Person& pn); ~原创 2024-02-25 15:58:21 · 101 阅读 · 0 评论 -
C++多继承二义性问题(菱形继承问题)
C++多继承二义性问题(菱形继承问题)这是多继承二义性问题的另一个常见问题,叫菱形问题。简单来说是,祖类为A,父类为B和C,子类为D,当我们想调用祖类A的成员时,编译器出现歧义的编译错误。解决方法:对父类进行虚继承祖类,看如下代码:#include<iostream>using namespace std;class A{public: void print(void);};//父类B虚继承祖类Aclass B:virtual public A{ };//父类原创 2024-02-25 15:58:11 · 118 阅读 · 0 评论 -
C++多继承二义性问题一
C++多继承二义性问题一多继承:一个类继承了多个父类这就叫做多继承。二义性问题描述:当C继承了A和B,A和B都恰好有相同名字的成员,C调用该成员时就出现了歧义,编译器不知道C调用的是哪一个父类的成员。解决方法:1、将A或B类的成员更改名字即可。2、在C类中重新定义有歧义的成员名称,将继承的成员覆盖。3、指定调哪一个父类的成员,即子类名.父类名::成员方法,如下段代码所示:#include<iostream>using namespace std;//定义父类Aclass原创 2024-02-25 15:58:02 · 124 阅读 · 0 评论 -
cout输出八进制和十六进制整数
cout输出八进制和十六进制整数文章目录cout输出八进制和十六进制整数前言1.步骤说明1.1 第一步:设置为八进制或十六进制1.2 第二步:利用控制符代码示例总结前言提示:我们都知道cout默认的输出数据是十进制,但是怎样输出八进制和十六进制呢?这个时候就需要我们利用C++的规则来实现。1.步骤说明1.1 第一步:设置为八进制或十六进制我们可以将整型数字直接设置成八进制或者十六进制,C++使用前一(二)位来标识数字是什么进制。如果第一位为1-9,则遵循的是十进制;如果第一位是0,第二位为原创 2024-02-25 15:57:39 · 348 阅读 · 0 评论 -
c++的关键字typeid
文章目录一、什么typeid?二、怎么用typeid一、什么typeid?二、怎么用typeid注意:typeid的定义和声明是在typeinfo中,所以预编译头文件的时候需要包含#include。#include<iostream>#include<typeinfo> //必须要包含该头文件using namespace std;int main(){ int a = 0; double b = 2.0; cout <<原创 2024-02-25 15:56:50 · 199 阅读 · 0 评论 -
c++中cout和cin的使用
c++的cout和使用cout一、基本使用二、使用细节三、与printf的区别cout的优势printf的优势cin一、基本用法二、注意实现输入的时候不要使用引用符&cin的输入会以空格为中断总结cout一、基本使用示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用细节代码如下(示例):三、与printf的区别cout的优势printf的优势cin一、基本用法二、注意实现输入的时候不要使用引用符&cin的输入会以.原创 2024-02-25 15:56:32 · 504 阅读 · 0 评论 -
C++编程fstream读写文件
#include<iostream>#include<fstream>using namespace std;int main(){ fstream fs; fs.open("2.txt", ios_base::in|ios_base::out); char str[] = "hello world"; char rstr[16] = {0}; if(fs.is_open()) { cout << "open s原创 2024-02-25 15:56:16 · 126 阅读 · 0 评论 -
C++的namespace知识点
C++的namespace知识点namespace的作用namespace的调用特殊的命名空间匿名命名空间默认命名空间namespace的作用namespace的调用特殊的命名空间匿名命名空间默认命名空间原创 2024-02-25 15:55:46 · 258 阅读 · 0 评论