面向对象,全局函数和成员函数之间的转换

class A
{
private:
 int a;
 int b;
public:
 A(int a, int b)
 {
  this->a = a;
  this->b = b;
 }

A Test(A &aa)
 {
  A temp = A(this->a + aa.a, this->b + aa.b);
  cout << temp.a << "b:" << temp.b << endl;
  return temp;
 }

A &Test1(A &Aa)
 {
  this->a = this->a + Aa.a;
  this->b = this->b + Aa.b;
  return *this;
 }

void print()
 {
  cout << this->a << "b:" << this->b << endl;
 }
};

void main()
{
 A a1(1, 2);
 A a2(3, 4);
 a1.Test1(a2);
 //a2.Test(a1);
 a1.print();
 
 system("pause");
}

原文地址:https://www.cnblogs.com/jefy/p/9404388.html

时间: 2024-10-11 10:00:49

面向对象,全局函数和成员函数之间的转换的相关文章

golang写业务代码,用全局函数还是成员函数

在golang中,函数划分为全局函数和成员函数,在使用的时候,有种情况,会产生一些疑惑的,就是在写业务代码的时候,使用全局函数好像会比较方便,一般业务代码,都不会复用,都是针对特定的业务进行编程,要复用的代码都会封装为功能函数了.在写业务代码的时候,使用包+全局函数的划分方式,可以将业务代码写成单例,把receive也省略掉了,简单清晰. 使用包+全局函数的方式来划分模块,很多项目在写业务代码的时候,都是这样操作的,但这样会增加目录的层次,看起来会比较啰嗦. 因为使用包划分代码,业务代码使用的变

c++语言友元函数和成员函数对运算符重载

#include<iostream> using namespace std; /******************************************/ /*use member function to overload operator*/ /******************************************/ class RMB{ public: RMB(unsigned int d, unsigned int c); RMB operator + (RM

bind()适配器(Adapter) -- 调用全局函数及成员函数

调用全局函数 调用全局函数程序实例: #include <iostream> #include <algorithm> #include <functional> #include <locale> #include <string> using namespace std; using namespace std::placeholders; char my_toupper(char c) { locale loc; return std::u

python-day3-内置函数与字符字节之间的转换

1 #三元运算 2 1 if True else 0 3 >>>1 4 5 1 if False else 0 6 >>>0 7 8 #内置函数lambda 9 def f1(a1): 10 return a1+100 11 ret=f1(10) 12 print(ret) 13 >>>110 14 #相当于 15 f2=lambda a1:a1+100 16 ret2=f2(10) 17 print(ret2) 18 >>>110

【C/C++学院】(8)全局函数和类成员函数转化/友元/操作符重载

1.全局函数和类成员函数转化 全局函数和成员函数的相互转化:只需要修改一个指向本类的this指针: #include <iostream> using namespace std; class Test { public: Test(int a, int b) { this->a = a; this->b = b; } //成员函数 Test &Gadd2(Test &t2) { this->a = this->a + t2.a; this->b

成员函数指针与高性能的C++委托

成员函数指针与高性能的C++委托(上篇) 撰文:Don Clugston 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托 (delegate)")在一些语言中已经证明了它宝贵的价值.在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础.而在目前,C#使"委托&

C++ Primer 学习笔记_24_类与数据抽象(10)--static 与单例模式、auto_ptr与单例模式、const成员函数、const 对象、mutable修饰符

C++ Primer 学习笔记_24_类与数据抽象(10)--static 与单例模式.auto_ptr与单例模式.const成员函数.const 对象.mutable修饰符 前言 [例]写出面向对象的五个基本原则? 解答:单一职责原则,开放封闭原则,依赖倒置原则,接口隔离原则和里氏替换原则 里氏替换原则:子类型必须能够替换他们的基类型. 设计模式分为三种类型:创建型模式.结构型模式和行为型模式 一.static 与单例模式 1.单例模式 单例模式的意图:保证一个类仅有一个实例,并提供一个访问它

成员函数作为线程函数调用

遇到的问题 我们在编程中需要把数据封装成一个类,调用pthread_create 利用成员函数去创建一个线程往往是不成功的! error: argumentof type 'void* (Threadpool::)(void*)' does not match 'void* (*)(void*)' 出现类型不匹配的问题.因为pthread_create需要的参数类型为void*(*)(void*),而thread_rounter作为类的成员函数时其类型是void* (Threadpool::)(

C++成员函数指针错误用法警示(成员函数指针与高性能的C++委托,三篇),附好多评论

今天做一个成绩管理系统的并发引擎,用Qt做的,仿照QtConcurrent搞了个模板基类.这里为了隐藏细节,隔离变化,把并发的东西全部包含在模板基类中.子类只需注册需要并发执行的入口函数即可在单独线程中执行.最终目标是,继承的业务逻辑类外部调用时有两个接口可选,调用syncRun同步执行:调用由引擎自动生成的asyncRun就异步执行.最终自动生成asyncRun的模板基类没能实现,主要原因是mingw对this处理的太有问题了!!原本以为编译器问题,后来才知道成员函数指针和this指针如此特殊