【C++——函数(二)】教程文章相关的互联网学习教程文章

C++ 函数对象 即仿函数的简单实用【代码】

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;class MyPrint { public:void operator()( int num){cout << "num " << num << endl;count++;}int count = 0; };void MyPrint2(int num ) {cout << "num " << num << endl; }void test01() {//MyPrint是一个类 ,而不是函数MyPrint myPrint;myPrint(111); //MyPrint2(111);MyPrint()(1000); } //函数对象超出普通函数概念,内部可以保存状态 void test02(...

【C++深度解析】12、构造函数与拷贝构造函数【代码】【图】

文章目录1 问题2 构造函数2.1 构造函数重载2.2 手动调用构造函数2.3 开发数组类解决原生数组安全性问题3 拷贝构造函数3.1 深拷贝与浅拷贝3.2 什么时候需要深拷贝?3.3 数组类改进4 小结 1 问题 下面的类定义中成员变量 i 和 j 的初始值是多少?在栈、堆上创建对象时,成员变量初始为随机值 在静态存储区创建对象时,成员变量初始为 0 值全局变量位于静态存储区,局部变量在栈中,malloc 申请的在堆中,new 从自由存储区申请空间,自...

C++之function函数【代码】

std::function 是一种通用、多态的函数封装,它的实例可以对任何可以调用的目标实体进行存储、复制和调用操作,它也是对 C++中现有的可调用实体的一种类型安全的包裹(相对来说,函数指针的调用不是类型安全的),简而言之,std::function 就是函数的容器。 在前面的 Lambda 表达式中,我们已经介绍过使用 auto 关键字来接受一个 lambda 表达式。但有时候我们可能希望明确的指明这个 lambda 表达式的类型,这时就可以使用 std::fun...

C++ conversion function 转换函数【代码】

//转换函数:可以实现将一个类转换为令一种类型 举例: #include <iostream> using namespace std; class Fraction {//一个分数类 public:Fraction(int num,int den=1) :m_numerator(num),m_denominator(den){}operator double() const {//转换函数 //不改动分子分母的值,所以应该及时加上const以避免出现错误 return (double)(m_numerator/(m_denominator*1.0));//注意浮点数的转化; }int get() const{return m_denominator; ...

C++类继承的构造拷贝析构函数【代码】

代码-F #include<iostream> using namespace std; class zhu { public: zhu(int a, int b=7) :X(a), Y(b) {}//不存在默认构造函数时zhu(zhu &a) { X = a.X; Y = a.Y; }void printfpoint() { cout << X <<"."<< Y << endl; }~zhu() { cout << "第一个类的析构函数" << endl; cin.get(); } private:int X, Y; }; class jia :public zhu { public: jia(int x,int y) :zhu(x),a(y) {}//此时派生类构造函数的声明void printfmath() { co...

C++---函数模板【代码】

#include <iostream> #include <string>using namespace std;template <typename T> void Swap(T &a , T& b) {T t = a;a = b;b = t; } template <typename T> void sort(T a[],int len) {for(int i = 0;i < len;i++){for(int j = i;j < len;j++)//注意排序的i的赋值{if( a[i] > a[j]){Swap(a[i],a[j]);}}} } template < typename T > void printr(T a[],int len) {for(int i = 0;i < len;i++){cout<< a[i]<<"," ;}cout<<endl;} in...

C++关于srand函数使用时间作为种子仍然得到相同数字

例如上面所示,将srand()函数放在for循环里面,每次rand()生成的随机数都是一样的,这并是因为计算机运行很快,造成每次time产生的种子都是一样的(time的时间精度较低,只有55ms),所以得到的随机数也是一样的,所以要把srand()放在循环外面.作者:myleosu 链接:https://www.jianshu.com/p/1fd47704d8af 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。点赞 收藏分享文章举报BetterEth...

c++函数模板基础知识【代码】

导航 1.函数模板及注意事项 2.用模板写个排序函数 3.普通函数与函数模板的区别 4.普通函数与函数模板的调用 5.模板的局限性 ——————————————————————————————————— 1.函数模板 语法:template< typename T> typename也可以用class 其中T为通用类型,下面看两个例子 例1: #include <iostream> using namespace std; //交换两个整型函数 void swapint(int &a,int &b) {int temp = a;a = b;b = ...

C++中的仿函数使用【代码】

1、仿函数的概念 仿函数是一个是通过重载()运算符模拟函数形为的类。 2、实现方法 下面是一个简单的实现方法://看看字符串是否小于一个长度 class Test{public:explicit Test(int lenth) : len(lenth){}bool operator() (const QString& str) const{return str.length() < len;}private:const int len; };int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QString str = "abcde";int len1 = str.length()-1;int...

C++核心准则F.50:不愿意使用函数时使用lambda表达式【代码】

F.50: Use a lambda when a function wont do (to capture local variables, or to write a local function) F.50:在不愿意使用函数时使用lambda表达式(例如读取局部变量,访问局部函数) Reason(原因) Functions cant capture local variables or be defined at local scope; if you need those things, prefer a lambda where possible, and a handwritten function object where not. On the other hand, lambdas and functi...

【C++】__gcd(x,y)函数【代码】

无意间发现个有用的函数 __gcd(x,y)函数 用于求x,y的最大公约数。x,y不能是浮点数 头文件:#include< algorithm> #include<iostream> #include<algorithm> using namespace std; int main() {int a,b;cin>>a>>b;cout<<__gcd(a,b)<<endl; }其他求最大公约数的方法 1、循环 int gcd(int x,int y) {int r;while (a%b!=0){r=a%b;a=b;b=r; }return b; }int gcd(int a,int b) {return b>0 ? gcd(b,a%b):a; }2、递归 求x 和 y 的最大...

c++杂技(一):c++中的仿函数,把对象当成函数用【代码】

c++中,有操作符 operator() ,可以在对象后加上操作符 () ,使程序看起来像是函数执行。#include<iostream> using namespace std; template<typename T> class print { public:void operator() (const T& elem){cout << elem << " ";} };可以先声明一个print的对象,再调用操作符 () ,如下print<int> p; p(234); 如果p以后不再被使用,可以直接声明一个临时对象,然后调用操作符 () print<int>()(234);通常的使用方法如下int ia[...

【C++】sort 函数用法 例题 1185奥赛一本通【代码】

sort 是一个非常简便的函数 可以尝试这样一个例题 添加链接描述 可以用 sort 排列数字,字符串等; 头文件 #include<algorithm> 用法 sort(a+0,a+i+1) 前开后闭的区间 注:现在是默认排序 从小到大排的 排完序的区间是 (a+1,a+i) ,下面的例题可以看一下,你就明白了 sort(a+0,a+i+1,cmp) cmp是定义的一个函数 可以这样写bool cmp(int a,int b) {return a>b; } 那这个 sort(a+0,a+i,cmp)就是从大到小排序了; 下面就是这道题的答...

c++之atan()与atan2()函数【代码】

前言 在处理雷达数据的时候遇到了atan2函数的使用, 具体是根据point点的x, y, z坐标, 求出该点在点云中的序号, 即行列号. double vertical_angle = std::atan2(point.z, std::sqrt(point.x * point.x + point.y * point.y)) * 180 / M_PI;float horizon_angle = std::atan2(point.y, point.x) * 180 / M_PI; int col_index = std::round((horizon_angle / 0.2)) + cloud_width / 2;公式很好理解, 但是在求取col_index时加上了cloud...

C++-Record20—构造函数的调用规则

目录 基本概念 二个特殊的构造函数 调用规则 涉及代码 写在前面:本篇博客所提到的赋值构造函数等同于拷贝构造函数及复制构造函数 基本概念 二个特殊的构造函数 1)默认无参构造函数 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空 2)默认拷贝构造函数 当类中没有定义拷贝构造函数时,编译器默认提供一个默认拷贝构造函数,简单的进行成员变量的值复制 调用规则 1)当类中没有定义任何一...