![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
arron盘
这个作者很懒,什么都没留下…
展开
-
C++中main函数的参数解析argc和argv是啥?
argc和argv是什么意思?int main(int argc, char **argv){return 0;}其中,argc是argument count的简写,即参数个数; argv是argument value的简写,即参数值;以ros编码为例 #include "ros/ros.h" #include "beginner_tutorials/AddTwoInts.h"//AddTwoInts.h是重新编译beginner_tutorials包自动生成的 boo原创 2021-02-24 16:26:54 · 507 阅读 · 0 评论 -
写程序定义一个基类BaseClass,从它派生出类DerivedClass,在BaseClass中声明虚析构函数,在主函数中将一个动态分配的Derived的对象地址赋给一个BaseClass指针,然后
题目:写程序定义一个基类BaseClass,从它派生出类DerivedClass,在BaseClass中声明虚析构函数,在主函数中将一个动态分配的Derived的对象地址赋给一个BaseClass指针,然后通过指针释放对象空间.观察程序运行的过程.在BaseClass中的析构函数换成非虚构函数,再观察此时程序的运行过程.非虚析构函数#include <iostream>using namespace std;class BaseClass{public: BaseClas原创 2020-11-19 16:05:38 · 5023 阅读 · 0 评论 -
编写程序声明一个车(vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(motocycle)类,汽车(motocar)类,从bicyle和motoc
编写程序声明一个车(vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(motocycle)类,汽车(motocar)类,从bicyle和motocar派生出摩托车(motocycle)类,它们都有Run,Stop等成员函数.在main()函数中声明vehicle,bicyle,motocar,motocyle的对象,调用其Run(),Stop()函数,观察其执行情况.再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否运行成功;把Run,Stop声明为虚函数,再试试看.原创 2020-11-19 15:00:27 · 13061 阅读 · 2 评论 -
多态与重载 以重载--和++为例
1、第一种方法,传值重载:#ifndef POINT_H#define POINT_H#include<iostream>using namespace std;class Point{ protected: int x; int y;public: Point(int a,int b) { x=a; y=b; } Point operator++(); Point oper原创 2020-11-19 11:47:04 · 130 阅读 · 0 评论 -
递归的学习
https://www.bilibili.com/video/BV194411f71o?from=search&seid=1711483227498323844原创 2020-11-12 19:52:22 · 82 阅读 · 0 评论 -
树莓派64位系统成功安装bcm2835库
背景树莓派的GPIO库主要有三种wiringPi, RPI.GPIO,bcm2835。其中wiringPi和bcm2835是支持C/C++语言的库。名气上wiringPi更大一点,但奈何作者因为抑郁(网上有人评论)把库的源代码给封了,暂时也不支持64位系统所以安装不了。RPI.GPIO是Python库,脚本语言嘛原则上与系统无关,当然主要是因为我们的系统用的C++写,调用Python还是会稍微麻烦一点,所以没有实际测试。因此把希望寄托在了bcm2835库上了。测试材料Ubuntu20.04 serv原创 2020-10-23 09:34:50 · 2926 阅读 · 7 评论 -
拷贝赋值函数(详解)
拷贝赋值函数指针拷贝的四大步骤:检查是否自我赋值;删掉原数据;分配新的数据长度;赋值;inlineString& String::operator=(const String& str){//检测是否是自我赋值, if (this == &str) return *this;//删掉原数据; delete[] m_data; //分配新的数据长度; m_data = new char[ strlen(str.m_data)原创 2020-10-19 19:56:58 · 4377 阅读 · 1 评论 -
面向对象和基于对象的区别
**面向对象和基于对象的区别是多态,和继承无关。 **基于对象仅仅支持了抽象数据类型的功能,继承也不过体现了一种is-a的关系,也是抽象数据类型,只是建立了一个层次体系。但是什么是面向对象呢?就是根据对象的实际类型不同,可以自动完成不同的行为,而仅仅通过一致的调用形式。换句话说,也就是虚函数实现的多态。以上观点,在OO设计中已经得到了公认,多态的另一种实现方法是泛型。“面向对象”和“基于对象”两个不同的概念。面向对象的三大特点(封装,继承,多态)却一不可,通常“基于对象”使用对象,但是无法利用现有的对象转载 2020-10-17 16:20:39 · 300 阅读 · 0 评论 -
多线程编程实例
多线程的好处通过一个程序示例来展示单线程#include <iostream>#include <vector>#include <algorithm>#include<numeric>#include <string>using namespace std; int GetSum(vector<int>::iterator first,vector<int>::iterator last){ r原创 2020-09-22 14:56:25 · 202 阅读 · 0 评论 -
C++ explicit
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生,声明为explicit的构造函数不能在隐式转换中使用。C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。1 是个构造;2 是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个AAA的对象。这样看起来好象很酷,转载 2020-09-16 10:52:11 · 97 阅读 · 0 评论 -
memcpy以及string中c_str()、data()、copy(p,n)函数的用法
string中c_str()、data()、copy(p,n)函数的用法标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。c_str():生成一个const char*指针,指向以空字符终止的数组。注:***①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中。***注意。看下例:const char* c;str转载 2020-09-15 21:35:49 · 2173 阅读 · 0 评论 -
什么是回调函数?
原文地址:https://www.cnblogs.com/jiangzhaowei/p/9129105.html1. 什么是回调函数?回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义。我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类似这么一个场景来说明:A君去B君店里买东西,恰好缺货,A君留下号码给B君,有货时通知A君。感觉这个让人更容易想到的是异步操作,而不是回调。另外还有两句英文让我印象深刻:1) If you .转载 2020-08-11 21:46:22 · 193 阅读 · 0 评论 -
最全bazle中文教程(转载)
https://blog.gmem.cc/bazel-study-note简介Bazel是Google开源的,类似于Make、Maven或Gradle的构建和测试工具。它使用可读性强的、高层次的构建语言,支持多种编程语言,以及为多种平台进行交叉编译。Bazel的优势:高层次的构建语言:更加简单,Bazel抽象出库、二进制、脚本、数据集等概念,不需要编写调用编译器或链接器的脚本 快而可靠:能够缓存所有已经完成的工作步骤,并且跟踪文件内容、构建命令的变动情况,避免重复构建。此外Bazel还支持转载 2020-08-07 21:56:44 · 2780 阅读 · 0 评论 -
git
GitGit 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。Git 与 SVN 区别Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git原创 2020-07-29 14:44:05 · 125 阅读 · 0 评论 -
对象指针与动态对象
对象指针与动态对象1. Accessing Object Members via Pointers (用指针访问对象成员)Object pointers can be assigned new object names(对象指针可以指向新的对象名)Arrow operator -> : Using pointer to access object members (箭头运算符 -> :用指针访问对象成员)Circle circle1;Circle* pCircle = &ci转载 2020-07-21 14:22:27 · 211 阅读 · 0 评论 -
Concepts of Class 类的概念
Concepts of Class 类的概念1. OO Programming Concepts (面向对象编程的概念)Object-Oriented Programming (OOP) involves programming using objects. (OOP利用对象进行程序设计)An object represents an entity in the real world that can be distinctly identified. (一个对象表示现实世界中一个独一无二的实体)F原创 2020-07-21 14:21:00 · 275 阅读 · 0 评论 -
带有初始化器的if和switch语句
带有初始化器的if和switch语句1. if statement with an initializer (带有初始化器的if语句)1.1. if without an initializer (不带初始化器的if语句)int foo(int arg) { // do something return (arg);}int main() { auto x = foo(42); if (x > 40) { // do something with x } else {转载 2020-07-21 09:20:07 · 201 阅读 · 0 评论 -
Range-based for-loop (基于范围的for循环)
基于范围的for循环与普通for循环的主要差别就在于没有循环变量和循环条件控制。基于范围的for循环中,如果要修改广义集合中的元素,那么必须将元素名变量定义为引用类型转载 2020-07-21 08:57:32 · 1156 阅读 · 0 评论 -
常量和指针(Constant and Pointer)
在前先读,在前不变* (指针)和 const(常量) 谁在前先读谁 ;* 代表被指的数据,名字代表指针地址const在谁前面谁就不允许改变。转载 2020-07-20 14:56:26 · 218 阅读 · 0 评论 -
自动类型推导:decltype关键字
自动类型推导:decltype关键字1. 关键字decltype的用法decltype利用已知类型声明新变量。有了auto,为什么还要整出一个decltype?原因是,我们有时候想要从表达式的类型推断出要定义的变量类型,但不想用该表达式的值初始化变量。decltype是在编译期推导一个表达式的类型,它只做静态分析,因此它不会导致已知类型表达式执行。decltype 主要用于泛型编程(模板)2. 代码示例 #include<iostream>using names转载 2020-07-20 14:06:24 · 178 阅读 · 0 评论 -
Automatic Type Deduction: auto (C++11) 自动类型推导:auto关键字
Automatic Type Deduction: auto (C++11) 自动类型推导:auto关键字1. 关键字 autoC++03及之前的标准种,auto放在变量声明之前,声明变量的存储策略。但是这个关键字常省略不写。C++11中,auto关键字放在变量之前,作用是在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型例如:int a = 10;auto au_a = a;//自动类型推断,au_a为int类型cout << typeid(au_a).nam转载 2020-07-20 11:17:10 · 613 阅读 · 0 评论 -
C++引用和函数传参
C++引用的使用定义引用传递指针传递时,给的参数是变量的地址,引用传递给的普通变量.原创 2020-07-20 08:45:09 · 177 阅读 · 0 评论