【【C++】友元函数】教程文章相关的互联网学习教程文章

c++中struct和函数【代码】

// by 鸟哥 qq1833183060 struct和函数同名 #include <iostream> using std::cout; struct a{int i=9; };void a(){cout<<"in a."<<std::endl; } int main() { struct a st;cout<<st.i<<std::endl;a(); }//输出为 9 // in a.运行结果:9 in a.点赞 收藏分享文章举报鸟哥01发布了21 篇原创文章 · 获赞 5 · 访问量 1449私信 关注

C++学习笔记5:构造函数与析构函数【代码】

构造函数 定义:名字与类名相同,可以有参数,不能有返回值(void也不行) 作用:对对象进行初始化,如给成员变量进行赋初值 性质:(1)如果定义类时没有写构造函数,编译器会生成一个默认的无参数的构造函数,该函数不做任何操作(2)如果定义了构造函数,则编译器不会生成默认无参数的构造函数(3)对象生成时构造函数自动被调用,对象一旦生成,再也不能执行构造函数(4)一个类可以有多个构造函数 为什么需要构造函数:(1)执...

C++学习笔记4:内联函数 函数重载 函数缺省参数【代码】

1 内联函数目的:减少函数调用的开销方法:将整个函数的代码插入到调用语句处,不会产生调用函数语句。定义:在函数定义前面加inline关键字eg:inline int Max(int a, int b){if(a>b) return a;return b;}2 函数重载定义:名字相同,参数个数或者参数类型不同例子:int Max(double f1, double f2, double f3){}int Max(int n1, int n2){}int Max(int n1, int n2, int n3){}Max(3.5, 3.2); // 调用1Max(2, 4); // 调用2Max(2, 3, 4...

C++ a Function return a array 函数返回一组数组【代码】

https://blog.csdn.net/lijiayu2015/article/details/52821562 1. Dynamically allocated memory within a function float* add(float a[3], float b[3]) {float* sum=new float[3];//替换sum[0] = a[0] + b[0];sum[1] = a[1] + b[1];sum[2] = a[2] + b[2];return sum; }int main() {float A[3] = { 1, 1, 1};float B[3] = { 1, 2,3};float *M = add(A, B);cout << M[0] << " " << M[1] << " "<<M[2]<<endl;cout << M[0] << " " <...

C++第26课--类的静态成员函数【代码】【图】

本文学习自 狄泰软件学院 唐佐林老师的 C++课程通过需求:《随时可以获取当前对象的数目》来引出 类的静态成员函数; 方案1: 当前对象数目为私有的静态只读变量,可以通过成员函数获取,但是必须要定义新的对象才能获取到,舍弃。 方案2:将当前对象数目设置为public 的静态成员变量,通过类名访问,但是非常不安全,可以随意修改,舍弃。 方案3:将当前对象数目设置为private 的静态成员变量,通过公有静态成员函数访问 private静...

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...