
C++
文章平均质量分 72
C++基础
nuosen123
这个作者很懒,什么都没留下…
展开
-
gcc g++ 区别
链接: 多个目标文件(二进制)结合库函数等综合成的能直接独立执行的执行文件——生成后缀为“.out”的文件。无论是 gcc 还是 g++,用 extern “c” 时,都是以 C 的命名方式来为symbol 命名,(2)如上所述,如果后缀为.c,并且采用gcc编译器,则该宏就是未定义的,否则,就是已定义;(1)编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++;(1)后缀为.c的, gcc 把它当作是 c程序,而g++当作是 c++程序;原创 2023-04-17 20:29:01 · 567 阅读 · 0 评论 -
remove_reference
在介绍remove_reference之前,我们先看一段代码上面的代码会输出什么?输出为4,因为decltype(a)返回a的类型,我们知道*a的类型实际上是int& ,所以此时修改a[0] 等同于修改了b看看remove_reference 的做了什么他封装了一个普通的模板类,并且typedef T type,主要看第二个,封装了一个引用类型的T&我们使用时remove_reference,就会被传到第二个实现中。原创 2023-03-25 19:27:01 · 134 阅读 · 0 评论 -
左值右值将亡值泛左值
满足下列条件之一。原创 2023-03-25 19:28:26 · 880 阅读 · 0 评论 -
关于 move(sample).fun() 的思考
sample是个类, fun()是其子函数。原创 2023-03-25 19:24:36 · 543 阅读 · 0 评论 -
C++ 强制类型转化
在C++语言中新增了四个关键字static_cast、const_cast、reinterpret_cast和dynamic_cast。这四个关键字都是用于强制类型转换的。static_castC++中内置基本数据类型之间的相互转换。如果涉及到类的话,static_cast只能在有相互联系的类型中进行相互转换,不一定包含虚函数。用法:static_cast <目标类型说明符> (变量或表达式)int a = 10; int b = 3; double result = stati原创 2021-07-21 11:15:56 · 189 阅读 · 0 评论 -
C++ 智能指针
C++ STL 提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr。其中auto_ptr 是 C++98 提供的解决方案,C+11 已将其摒弃,并提出了 unique_ptr 作为 auto_ptr 替代方案。虽然 auto_ptr 已被摒弃,但在实际项目中仍可使用,但建议使用较新的 unique_ptr,因为 unique_ptr 比 auto_ptr 更加安全。shared_ptr 和 weak_ptr 则是 C+11 从准标准库 Boo.原创 2021-07-21 11:13:25 · 258 阅读 · 0 评论 -
C++ IO操作
参考上位:https://blog.youkuaiyun.com/weixin_42587961/article/details/86677869https://blog.youkuaiyun.com/weixin_40332685/article/details/81000393https://blog.youkuaiyun.com/kingstar158/article/details/6859379https://blog.youkuaiyun.com/vinson0526/article/details/9285003文章目录open原创 2021-07-26 10:07:13 · 276 阅读 · 0 评论 -
0、构造函数
C++类的默认函数在C++中,一个类有八个默认函数:默认构造函数;默认拷贝构造函数;默认析构函数;默认重载赋值运算符函数;默认重载取址运算符函数;默认重载取址运算符const函数;默认移动构造函数(C++11);默认重载移动赋值操作符函数(C++11)。如下这些函数:一个默认构造函数一个默认拷贝构造函数一个默认析构函数一个默认重载赋值操作符函数1、只有在第一次被调用时,才会被编译器创建,当然这几个生成的默认函数的实现就是什么都不做;2、所有这些函数都是inline和p原创 2021-07-21 11:02:57 · 176 阅读 · 0 评论 -
1、C++ 六个默认成员函数
转载:https://blog.youkuaiyun.com/u013270326/article/details/81235384 C++中创建一个空类:class Empty {};默认会生成4个函数,其函数的原型如下:public: Empty() { ... } Empty(const Empt...转载 2019-07-31 13:29:23 · 437 阅读 · 0 评论 -
2、拷贝构造函数和赋值运算的调用时机详解
参照:https://www.cnblogs.com/TianFang/archive/2012/10/27/2742121.html常见的给对象赋值方式有构造函数,拷贝构造函数,赋值运算符这三种方法,如下代码演示了这几种常见的方法。Aa1;Aa2(a1);Aa3 = a1;a3 = a2;代码的第一行就是通过默认构造函数来创建一个对象,一般也不会和其它几种构造方式混淆,和C#,Java等其它语言也是一样的,还比较容易掌握。而拷贝构造函数和赋值运...转载 2020-09-02 11:31:17 · 376 阅读 · 0 评论 -
3、赋值运算符函数执行时机详解
#include<iostream>#include<string> using namespace std; class Data{private: int data; public: // 构造函数 Data() { }; // 构造函数 Data(int _data):data(_data) { cout << "This is constructor" <.转载 2020-09-02 14:40:27 · 323 阅读 · 0 评论 -
4、const成员
1. const修饰类成员函数将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。即有''读''的权限,但没有''写''的权限。void display() const { // 相当于 void display(const Date* const this)cout << _year << endl; // 可读_year = 100..转载 2020-09-02 13:53:02 · 144 阅读 · 0 评论 -
5、重载 & 和 const&
转载:https://blog.youkuaiyun.com/yl_puyu/article/details/88987363 1. 简介取地址成员函数也是''类的六大默认成员函数''之一。其分为两种,普通取地址操作符、const取地址操作符。有了上一节''const成员''的基础,const成员函数及const对象去调用,普通的成员函数普通的对象来进行调用,若没有普通成员函数,那么普通对象也能够调用const成员函数。取地转载 2020-05-14 12:14:35 · 226 阅读 · 0 评论 -
6、重载操作符(operator)介绍
本文主要介绍C++中的重载操作符(operator)的相关知识。1. 概述1.1 whatoperator 是C++的一个关键字,它和运算符(如=)一起使用,表示一个运算符重载函数,在理解时可将operator和运算符(如operator=)视为一个函数名。使用operator重载运算符,是C++扩展运算符功能的方法。使用operator扩展运算符功能的原因如下:使重载后的运算符的使用方法与重载前一致 扩展运算符的功能只能通过函数的方式实现(实际上,C++中各种“功能”都是由函数实现的转载 2020-09-02 15:24:00 · 403 阅读 · 0 评论 -
7、std include
std命名空间是C++中标准库类型对象的命名空间。比如标准库中的类iostream、vector等都定义在该命名空间中,使用时要加上using声明(using namespace std) 或using指示(如std::string、std::vector<int>).using namespace 与 include :以前都是用#in...原创 2020-05-12 10:24:52 · 1049 阅读 · 0 评论 -
8、class 与 struct的默认权限区别
/* class和struct最大的区别:默认权限不同* class:成员的默认权限是private* struct:成员默认权限为public, 继承也默认为public继承*/class Human { char* name; //默认为private成员 int age; Human(const char* initString); //默认为private成员 ~Human(); void getObjName(); //默认为p...转载 2020-06-11 12:47:11 · 1961 阅读 · 0 评论 -
9、C++ 构造函数后加冒号
转载:https://www.cnblogs.com/qingyuanhu/p/4301691.htmlC++ 构造函数后加冒号其实冒号后的内容是初始化成员列表,一般有三种情况:1、对含有对象成员的对象进行初始化,例如,类line有两个私有对象成员startpoint、endpoint,line的构造函数写成:line(int sx,int sy,int ex,int ey):s...转载 2019-07-23 13:43:34 · 380 阅读 · 0 评论 -
10、前置声明的应用与陷阱
前置声明的使用 有一定C++开发经验的朋友可能会遇到这样的场景:两个类A与B是强耦合关系,类A要引用B的对象,类B也要引用类A的对象。好的,不难,我的第一直觉让我写出这样的代码:// A.h#include "B.h"class A{ B b;public: A(void); virtual ~A(void);}; //A.cpp#include "A.h"A::A(void){} A::~A(void){} // B.h#.转载 2020-09-02 15:45:06 · 171 阅读 · 0 评论 -
11、前置声明使用时机详解
这篇文章很大程度是受到Exceptional C++ (Hurb99)书中第四章 Compiler Firewalls and the Pimpl Idiom (编译器防火墙和Pimpl惯用法) 的启发,这一章讲述了减少编译时依赖的意义和一些惯用法,其实最为常用又无任何副作用的是使用前置声明来取代包括头文件。Item 26 的Guideline - "Never #include a header when a forward declaration will suffice"在这里,我自己总结了可..转载 2020-09-02 15:52:34 · 132 阅读 · 0 评论 -
12、多继承的构造和析构函数调用顺序
转载:https://www.cnblogs.com/tenjl-exv/p/7624284.html声明多继承的方法多继承与单继承的区别仅在于它们基类的个数。在定义多继承的派生类时,要指出它们所有基类名以及继承方式。声明形式如下:class 派生类名:继承方式1 基类名1,继承方式2,基类名2,......,继承方式n,基类名n{ 派生类新增成员;};注意:...转载 2019-07-29 15:23:56 · 1537 阅读 · 0 评论 -
13、c++虚继承(菱形继承问题)
转载:https://www.cnblogs.com/lovemee/p/10533324.html c++虚继承 在多重继承中,如果发生了如:类B继承类A,类C继承类A,类D同时继承了类B和类C。最终在类D中就有了两份类A的成员,这在程序中是不能容忍的。当然解决这个问题的方法就是利用虚继承。 1 class A{ 2 public: 3 int t; 4...转载 2020-07-22 14:23:36 · 152 阅读 · 0 评论 -
14 析构函数写成virtual的好处
相信学习c++的很多同志都听过这样的建议:最好将类的析构函数写成虚函数,如下:class B{public: B() { printf("B()\n"); } virtual ~B() { printf("~B()\n"); }private: int m_b;};这么写到底有什么好处呢?我们通过示例给大家解释,示例1,析构函数为普通函数//示例1class B{public: B() { printf("B()\n"); ...转载 2020-11-04 13:40:10 · 267 阅读 · 0 评论 -
extern “C“ 功能
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式进行编译。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。...原创 2020-09-08 10:45:33 · 89 阅读 · 0 评论 -
C++对象模型:单继承,多继承,虚继承
什么是对象模型有两个概念可以解释C++对象模型:语言中直接支持面向对象程序设计的部分。对于各种支持的底层实现机制。类中成员分类数据成员分为静态和非静态,成员函数有静态非静态以及虚函数class data members:static和nonstaticclass data functions:static、nonstatic和virtual比如:class Base{public:Base(</span><span style="color: #0000...转载 2020-08-26 14:40:03 · 381 阅读 · 0 评论 -
小甲鱼笔记
C++跟C第一个不同, 打印语句。cout << 打印内容 <<endl---------------------------------------------------------cout是一个输出流对象, 它是console out (控制台输出)的缩写。cout 属于 basic_ostream 类的对象。ostream类在...原创 2020-05-12 10:25:42 · 234 阅读 · 0 评论 -
C++ for循环
C++使用如下方法遍历一个容器:#include "stdafx.h"#include<iostream>#include<vector>int main(){std::vector<int> arr;arr.push_back(1);arr.push_back(2);for (auto it = arr.begi...原创 2020-05-12 10:25:18 · 341 阅读 · 0 评论 -
c++ Json.hpp 应用
上位参照https://blog.youkuaiyun.com/baidu_33879812/article/details/107559843json.hpp是一个非常强大的工具,只需要包含这个头文件,即可对json文件进行操作。Git地址:https://github.com/nlohmann/jsonGit上有简单的使用说明,简书这位作者已经将其汉化。详见:https://www.jianshu.com/p/69e57f2af904?tdsourcetag=s_pctim_aiomsg来源:鸿蒙原创 2021-07-26 12:45:33 · 1919 阅读 · 0 评论