C++托管类,其成员函数中的参数是该类,报错 [问题点数:100分,结帖人u010799788]

Bbs1
本版专家分:0
结帖率 88.89%
Bbs6
本版专家分:9741
Bbs6
本版专家分:8829
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs6
本版专家分:9741
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:4
Bbs1
本版专家分:4
Bbs1
本版专家分:4
Bbs6
本版专家分:9741
Bbs6
本版专家分:6864
Blank
红花 2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs6
本版专家分:9741
Bbs1
本版专家分:0
Bbs6
本版专家分:9741
Bbs6
本版专家分:6864
Blank
红花 2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs6
本版专家分:6864
Blank
红花 2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs7
本版专家分:10663
Bbs6
本版专家分:6864
Blank
红花 2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs6
本版专家分:9988
Bbs1
本版专家分:0
Bbs6
本版专家分:6864
Blank
红花 2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs6
本版专家分:6864
Blank
红花 2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs1
本版专家分:0
其他相关推荐
【迷你书】C%2B%2B程序设计原理与实践(C%2B%2B之父...
【迷你书】C%2B%2B程序设计原理与实践(C%2B%2B之父...
类和对象习题
1、创建一个employee类,该类包含姓名、街道地址、市、省和邮政编码等数据成员和构造函数、changename()、display()等成员函数成员函数的定义放在类外,数据成员均为string类。编写程序实现该类并调用相应成员函数完成信息的输出。 #include #include using namespace std;0 class employee { protected: st
Problem A: 一元二次方程类
Problem A: 一元二次方程类 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1673  Solved: 852 [Submit][Status][Web Board] Description 定义一个表示一元二次方程的类Equation,该类至少具有以下3个数据成员:a、b和c,用于表示方程“a*x*x + b*x
C++11实现的线程池,可以使用类成员函数来添加线程任务
功能:         1:可以使用类成员函数/全局函数单独的创建一个线程,可以带多个参数。        2:可以使用类成员函数/全局函数单独的为线程池添加一个任务,可以带多个参数。        3:线程池的线程数量可手动扩展,稍作修改可以修改为自动扩充,由大家看需要进行更改,这里只做抛砖引玉。下载地址:https://download.csdn.net/download/j506825719...
C++中本类对象的引用作为参数,可以直接访问其私有成员
https://www.cnblogs.com/cLockey/p/4835575.html
C++考前热身
一. 单选 (共40题,共80分)  1. 假定AB为一个类,则执行 “AB x;”语句时将自动调用该类的( )。 (2分)   A.带参构造函数    B.无参构造函数    C.拷贝构造函数      D.赋值重载函数      ★标准答案:B  2. 若类X是类Y的友元类,则下列哪种访问关系是正确的 (2分)   A.类X的成员不能访问类Y的私有成员    B.类X的成
C++ 20年
 今天逛到到Herb Sutter的blog,提到C++自85年首次商业登场,今年就是20年了。  C++ Connections: 20 Years of C++"C++ Connections is a five-day conference event focused on practical C++ practice and experience, and that also celebr
C++20、友元类
什么是友元类?可以说是亲密朋友。不过这种朋友只是单向的。假设类B是类A的友元类,那么类B的所有函数都是类A的友元函数, 可以访问类A的所有成员,包括私有和保护的。但是类A却不能访问类B的所有成员函数。 示例入下: 运行结果: 由于关系的单向性,ga.b->m_b; 在编译时就是通不过的。如果写成这样,ga.b->getAValue();相当于一个类A的对象调用了他的另外一个
C/C++求职者必备的20道面试题
面试题有难有易,不能因为容易,我们就轻视,更不能因为难,我们就放弃。我们面对高薪就业的态度永远不变,那就是坚持、坚持、再坚持。出现问题,找原因;遇到困难,想办法。我们一直坚信只有在坚持中才能看到希望,而不是看到希望才去坚持。 人生没有如果,只有结果和后果。既然选择了,就不后悔。年轻就是资本,年轻就要吃苦,就要历练。就要学会在坚持中成长。如此感慨,至深的心得体会,绝对的经验之谈。 OK,
任何时候都适用的20个C++技巧
这些小技巧之所以特别,是因为这些信息通常吧不能在C++书籍或者网站上找到。比如说,成员指针,即使对于高级程序员也是比较棘手,和易于产生bugs的,是应该尽量避免的问题之一。
C++ 成员函数与成员变量的关系
在C++中,#include using namespace std;struct Data{ int x = 10; int y() { return 20; } };int main() { Data* p=NULL; // 不用 new 创建指针 cout<
C#直接调用C++非托管结构体、类、成员函数、成员变量
[StructLayout(LayoutKind.Sequential)] public class MyOGRE { //该方式是直接调用C++ DLL内的类的成员函数。 [DllImport("CPlusPlusCSharpMix.dll", EntryPoint = "?MyOGREHello@MyOGRE@@Q
类的静态数据成员和静态成员函数浅析
一、静态数据成员        类中的数据成员声明前加上static,则表示该数据成员为静态数据成员。除了与其他数据具有相同的public/private/protect访问属性外,还有一些其他的属性:        1、不能在类中进行初始化,只能在类外。           因为静态数据成员为所有类对象公有(包括派生类),不占用类对象的存储空间。若在类中初始化,容易造成对其他对象中该数
类中函数的一个隐含参数--this指针
为什么会有this指针呢?我们需要来看一段代码感受一下。#include using namespace std; class Student { public: void InitStudent(char *name,char*gender,int age) { strcpy(_name,name); stcpy(_gender,gender); _
成员变量作为成员函数的默认参数
如何在类成员函数中默认引用类成员?class CAbc;class CAbc{private:int m_abc; public:void fun0(int &p=NULL)//编译错误{ printf("%d",p);}void fun1(const int &p=NULL)//编译通过{ printf("%d",p);}void fun2(int &p=this->m_abc)//编
SDUSTOJ Problem F: 一元二次方程类
仅供交流学习!!!
C++类成员函数作为线程回调函数
C++类成员函数作为回调函数的方法
c++ 之类成员函数作为函数的形参传递
在数据库的开发中, 做c++开发的人,可能习惯这样做,写一个类,里面封装了所有需要的数据库操作函数。在以后要用的地方,声明一个对象,直接调用其中的成员函数。 但有一个问题是,我们经常需要把我们从数据库里面查询到的东西显示在我们的主窗口的界面上。这时,就是两个类之间的数据交换的问题了。 关于这个问题。我总结一下,有三种,当然,可能还有更多。 1.一切如常,只是声明的类成员函数前,要加关键字s
定义三角形类,包括3个数剧成员a,b,c为三边,通过成员函数计算周长和面积
#include&lt;iostream&gt;#include&lt;cmath&gt;using namespace std;class s{float a,b,c;public:void gets();void countc(){ cout&lt;&lt;"三角形周长为:"; cout&lt;&lt;(a+b+c)&lt;&lt;endl;}void counts();};void s::c...
C++中类的访问权限针对的是类而不是对象!(为什么类中的函数可以访问对象的私有成员?)
我们首先看一段程序:class A { private: int i; public: A(int i): i(i) {} void print(A a) { cout << a.i <
C++ const 修饰成员函数
看到const 关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。 const 是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多C++程序设计书籍建议:
什么是回调函数,如何定义和实现一个类的成员函数为回调函数(转)
C/C++中回调函数初探    简介    对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。    什么是回调函数?  简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。
C++ 实验九
 实验九 友元与运算符重载 【实验目的】 1、 掌握友元函数的使用方法; 2、 掌握使用运算符重载方法; 【实验内容】 1、 定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=” 运算。 •分别用成员函数与友元函数编写运算符重载函数; •在主函数中定义复数对象 c1(10,20)、c2(15,30),进行 c2-=c1 的复数运算, 并输出 c1、c2
c++类的成员函数在定义对象前分配了存储空间吗?
对于一般的类(非静态)来说,在定义类但还未创建对象的时候,类的所有成员(包括变量和函数)都占用着内存空间(准确地说占用着指令代码区),但不占用堆栈空间 而创建对象的时候,会根据对象的类型占用堆栈的空间(用传统模式创建对象会占用栈空间,用引用+new模式创建对象会占用堆空间,同时引用会保存在栈里) 对于静态(static)类来说,静态类是不能实例化创建对象的,所有的成员都是静态成员,也需
c++——类对象和类指针(作用基本一样:都是为了调用类的成员变量和成员函数)
代码:1234567Student a; //实例化一个类对象as.setName("A"); //Studeng *b = new Student();Student *b; //实例化一个类指针bb = new Student();b-&gt;setName("B");分析:定义类对象基本格式是:Student a;在定义之后就已经为a这个对象分配了内存,且为内存栈;定义类指针基本格式是:St...
前端程序员面试笔试宝典
前端
定义长方体类,数据成员有长、宽、高,成员函数有带默认形参值的构造函数(默认长宽高分别为2.5、3.4、2)、计算体积函数,分别构造默认对象和长宽高分别为6.25、4.8、5.2的对象,输出各对象的体积
定义长方体类,数据成员有长、宽、高,成员函数有带默认形参值的构造函数(默认长宽高分别为2.5、3.4、2)、计算体积函数,分别构造默认对象和长宽高分别为6.25、4.8、5.2的对象,输出各对象的体积。 #include using namespace std; class Box { public: Box(double l=2.5,double w=3.4,double h=2):l
友元类,成员函数做友元函数
在C++中,可以把某个类中的成员函数或者整个类声明为友元。 class person; class friendly1 { public: void printperson(person& per); }; class friendly2 { public: void setperson(person& per); }; class person { publi
类与对象 实验五 期末回顾
实验目录:点击打开链接第一题1、教材P242程序设计的第1题定义一个Book(图书)类,在该类定义中包括以下数据成员和成员函数。数据成员:bookname(书名)、price(价格)和number(存书数量)。成员函数:display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。在main函数中,要求创建某一种图书对象...
第四周任务一:设计一个三角形类,给出个成员函数的定义
#include using namespace std; #include ; class Triangle {public: void Setabc(float x, float y, float z);//置三边的值,注意要能成三角形 void Getabc(float *x, float *y, float *z);//取三边的值 float Perime
C++ 类的成员函数定义在.h中为什么会产生函数重定义错误?
前言此篇博客来源于我在百度知道的一个回答,当时回答的不太清楚,而且追答的时候又有字数的限制,不得已决定写个博客来。问题如下 F.h: void F(){} 1.cpp: #include"F.h" void main(){F()} 2.cpp: #include"F.h" void ff(){F()} 这样会报error LNK2005的错误。但为什么连接的时候会检查重
C++运算符重载函数作为类成员函数和友元函数
例10.2中对运算符“+”进行了重载,使之能用于两个复数的相加。在该例中运算符重载函数operator+作为Complex类中的成员函数。 可能有的读者会提出这样的问题:”+“是双目运算符,为什么在例10.2程序中的重载函数中只有一个参数呢?实际上,运算符重载函数有两个参数,由于重载函数是Complex类中的成员函数,有一个参数是隐含的,运算符函数是用this指针隐式地访问类对象的成员。可以
成员函数作为线程参数的用法
1.传统用法: void RunThread(); std::thread* _runThread = new std::thread(std::mem_fn(&LarkVoice::RunThread), this); _runThread->detach(); 2.lambda用法: std::thread *_runThread = new std::thread( [=]
Problem C: 一元二次方程类
Description 定义一个表示一元二次方程的类Equation,该类至少具有以下3个数据成员:a、b和c,用于表示方程“a*x*x + b*x +c = 0”。同时,该类还至少具有以下两个成员函数: 1. void solve():用于求方程的根。 2. void printRoot():用于输出方程的根。 设定: 1. 所有输入的a、b、c所生成的方程必定有个2个不同的实根。
编写程序定义Point类,有数据成员X,Y,为其定义友元函数实现重载+。
#include class Point{public:   Point() { X = Y = 0; }   Point( int x, int y ) { X = x; Y = y; }   void Print() { cout << "Point(" << X << ", " << Y << ")" << endl; }   friend Point operator+( Poin
定义圆类Circle,数据成员有半径radius,成员函数有默认构造函数(默认半径为10)、构造函数、计算圆面积、圆周长以及输出函数,分别构造默认对象和半径为15的对象,输出各对象的周长与面积。
定义圆类Circle,数据成员有半径radius,成员函数有默认构造函数(默认半径为10)、构造函数、计算圆面积、圆周长以及输出函数,分别构造默认对象和半径为15的对象,输出各对象的周长与面积。 #include #include #define PI 3.14 using namespace std; class Circle { private: double radius
C++程序设计代码
实验一 C++简单程序设计(2学时) 1.编程计算图形的面积。程序可以计算圆形、长方形、正方形的面积、运行时先提示用户选择图形类型,然后,对圆形要求用户输入半径、对长方形要求用户输入长和宽的值,对正方形要求用户输入边长,计算出面积后将其显示出来。要求使用debug调试功能观察程序运行中变量值的变化情况。 2.定义一个表示时间的结构体,可以精确的表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 实验二 函数的应用(2学时) 1.编写重载函数Max1,分别求出两个整数,两个双精度数,三个整数,三个双精度数的最大值。 2.使用重载函数模板重新实现上面的函数Max1。 要求:(1)练习重载函数的使用;(2) 练习函数模板的使用。 实验三 类与对象(2学时) 1.声明一个Dog类,包含age、weight等属性,以及对这些属性操作的方法。实现并测试这个类。 2.设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角和右上角两个点的坐标,有成员函数能计算矩形的面积。 3.定义一个CPU类,包含等级、频率,电压等属性,并编写构造函数、析构函数,以及成员函数run、stop模拟CPU的状态。其中,等级为整型,频率为单位是兆赫兹的整数,电压为浮点型。要求自己设计各个属性的标识。 4.定义一个简单的Computer类,包含数据成员cpu、ram、cdrom等等,有两个成员函数run、stop。其中cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。 5.(必做)设计一个用于人事管理的People类。考虑到通用性,可以只抽象出所有人员都 具有的属性:number(编号),sex(性别) ,birthday(出生日期),id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员函数的录入和显示。要求包括:编写构造函数和析构函数、拷贝构造函数、内联成员函数,类的组合。 实验四 C++程序的结构(2学时) 1.编写程序,实现并测试客户机(Client)类。定义字符型静态数据成员ServerName[10],保存其服务器名称;整型静态数据成员ClientNum,记录定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中定义类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量的取值的变化情况。 2、在实验三题目5编写的人员类中设计适当的方法来实现类中数据的共享性,并采用多文件结构实现程序。 3.(选做)定义类X、Y、Z,函数h(X *),满足:类X有私有成员i,Y的成员函数g(X *)是X的友元函数,实现对X的成员i加1,类Z是类X的友元类,其成员函数f(X *)实现对X的成员i加5,函数h(X *)是X的友元函数,实现对X的成员i加10。在一个文件中声明类,在一个文件中实现类,在另一个文件中测试类。 实验五 继承和派生(2学时) 1.设计并定义一个交通工具类,并通过该类派生出新的类,编写程序定义这些类并测试它; 2.(选做)声明一个基类Shape,在此基础上派生Rectangle和Circle,二者都有GetArea()函数计算对象的面积,编写程序测试。 3.(选做)声明一个哺乳动物类Mammal,再由此派生出狗类Dog,定义一个Dog类的对象,观察基类与派生类的构造函数和析构函数的调用顺序。 4.完善实验四第2题的程序,具体要求如下: 任务1:从people(人员)类派生出student(学生)类,添加属性:学校、学院、专业、班号、入学成绩,设计相应的成员函数(构造函数,拷贝构造函数,录入函数,显示函数)。 任务2:从people类派生出teacher(教师)类,添加属性:职务,部门,职称。并设计相应的成员函数。 任务3:从student类派生出graduate(研究生)类,添加属性:导师,研究方向。并设计相应的成员函数。 任务4:编写程序来测试这个类。 实验六 小型学生管理系统的设计与实现1(2学时) 设计学生类、课程类、成绩类及相应的成员函数。要求能实现学生的信息、课程信息和成绩信息的增加、修改、删除与查询。 实验七 多态性(2学时) 1.定义Point类,有坐标X和Y两个成员变量,对Point类重载++和――运算符,实现对坐标值的改变。 2.定义一个车(Vehicle)类,有run,stop等成员函数,由此派生出自行车(bicycle)类、汽车(car)类,由bicycle类和car类派生出摩托车(motocar)类,它们都包含run,stop等成员函数,编写相应的虚函数并测试。 实验八 流类库与输入/输出(2学时) 1.编写程序,以二进制方式打开指定的一个英文文本文件,统计各个字符出现的频率并在每一行前加行号。 要求:(1).熟悉流类库中常用的类及其成员函数的用法;(2).学习标准输入输出及格式控制;(3).学习对文件的应用方法。
设计一个日期类Date
//用C++++设计一个日期类Date,该类用于表示日期值(年、月、日)。 //要求除了能够通过相应的成员函数设置和获取日期值外,还能够实现将日期加一天的操作。 #include #include using namespace std; class date { private: int day; int month; int year; public: date();
[C++] 将成员函数作为函数形参
函数以及函数对象都可以作为参数来增加其它函数的功能,并且通常作为STL算法的第二个版本的最后一个参数成员函数是否可以作为形参呢?如果可以,形参表如何写呢?
Point类的构造函数
Problem Description 通过本题目的练习可以掌握类的构造函数的定义; 设计一个点类Point,私有数据成员有x、y;公有成员函数有:无参数的构造函数Point(),带参数的构造函数Point(int,int);ShowPoint()输出点对象的信息 在主函数main()中调用相应成员函数,从键盘接收时间对象的x和y的值,并向显示器输出相应的值。 Input#incl
C++类中指针成员的管理(值型类、智能指针)
在使用C++类的时候免不了会遇到类中需要指针成员的时候,但类成员里面一出现指针就很容易一不小心碰上各种各样的麻烦,尤其需要注意的是类对象的初始化和赋值,下面总结了一些常见解决办法。先来看看这样一个类:#include #ifndef DEMO_H_ #define DEMO_H_using std::cout; using std::endl; class Demo {
C/C++经典面试题总结
【题目1】引用和指针有什么区别? 【解答】 (1)定义一个指针变量编译器会为它分配内存,而引用不占用任何内存; (2)引用必须在定义时被初始化,指针不必; (3)不存在指向空值的引用,但存在指向空值的指针。 【题目2】函数参数传递中值传递、地址传递、引用传递有什么区别? 【解答】 (1) 值传递,会为形参重新分配内存空间,将实参的值拷贝给形参,形参的值不会影响实参的值,函数调用结束后...
C++程序设计课后习题及解答(第八章)
(1).定义一个point类,对其重载++、¬- -、<>运算符,并在主函数中对其进行测试。 (2).请写一个抽象类Shape,它有两个私有数据成员X、Y,表示一个点的坐标,有一个无参构造函数和有参构造函数,有用于几何图形计算面积(GetArea)和计算周长(GetPerim)的纯虚函数。通过抽象类Shape派生出矩形类Rectangle和圆类Circle。在主函数中定义一个Rectangle对象和一个Circle对象,计算并显示出它们的面积和周长。
Python 类成员函数第一个参数self
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。 你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObj
C++ 矩形类 (包括数据成员和函数成员)
设计一个程序,定义一个矩形类,包括数据成员和函数成员。
成员函数中的const不同位置的作用
例子: class MyClass { public:             int const fun1()             {                      return 0;             }             void fun2() const             {             } private:
C++类中函数隐藏参数——this指针
C++类中函数隐藏参数——this指针 this指针于类相继而生,在引用之前产生,故保留其体系。 this指针到底做了些什么的事情,我们可以拿一段代码来看一下。 #include using namespace std; class Student { public: void InitStudent(char *name, char *gender, int * age) {
c++ 成员函数作为函数指针参数传入
c++ 成员函数作为函数指针参数传入 标签: c++treestruct图形c 2012-08-19 18:56 4239人阅读 评论(0) 收藏 举报 分类: C++(11) 数据结构(13) 版权声明:本文为博主原创文章,未经博主允许不得转载。        在编写二叉树图形化演示程序的时候,要实现二叉树的前序,中
关于模板类中模板成员函数在类定义外部特化报错,错为声明与定义不匹配
今天写STL中 rb_tree 的时候意外的发现一个问题:模板类的模板成员函数不能在类定义外部进行特化,特化必须放在类定义内,否则将报错:error C2244: “X::test”: 无法将函数定义与现有的声明匹配 经过写如下的简单代码可以看出问题所在:(错误版本) //定义模板类X。其中拥有模板成员 test template class X { public: X(){}
类作为参数给另一个类的成员函数使用注意点
class A的成员函数要使用class B对象、指针、引用,必须在class B 的定义之后,而不是声明之后。不像C语言中, 函数的声明在调用该函数的函数之前,而函数定义可以在该函数之后。如下例子: #include #include using namespace std; class B; class A { private: int a; publi
java static成员变量和成员函数
static成员变量 希望该类所有的对象共享同一个成员。此时就是 static 大显身手的时候了!! Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问。 静态成员属于整个类,当系统第一次使用该类时,就会为其
C++学习总结(十一)——类的静态函数,成员函数的默认参数,类中包含引用和常量
一.类的静态成员变量,以及静态函数。 静态成员变量: 1.静态成员共享机制 2.静态成员局部属于类,它不是对象的成员,位于静态区。 3.静态成员变量需要在外部进行初始化。 静态函数: 1.静态成员函数都在代码区,类的静态函数都是共享的。 2.类的大小不包含代码区,创建指向类方法的指针,需要指定所属的类。如有类函数void go();想要创建指向该函数的指针,则创建方式如下: cla
C++——隐含的this指针&类的六个默认的成员函数
一. 隐含的this指针1. 每个成员函数都有一个指针形参,它的名字是固定的,叫做this指针。this指针是隐式的,并且它是成员函数的第一个参数。要注意的是构造函数比较特殊,它没有this指针;2. 编译器会对成员函数进行处理,在对象调用成员函数时,编译器将对象的地址作为实参传给传给成员函数的第一个形参this指针;编写代码如下:#include &lt;iostream&gt; using n...
C++ 12.1 类的定义、声明、成员函数、数据成员
简介 数据成员一般声明为private,以实现信息的隐蔽 成员函数一般声明为public,以提供外界使用的接口 构造函数一般声明为public,以便创建类的对象 创建一个类类型的对象时,编译器会自动使用一个构造函数来初始化该对象,构造函数是一个特殊的、与类同名的成员函数,用于初始化每个数据成员来设置初始值。 构造函数一般使用一个构造函数初始化列表,来初始化对象的数据成员构造函数初始化列表由成员名和带
设计并测试一个名为Rectangle的矩形类
//其属性为矩形的左下角和右上角两个点的坐标,能计算矩形的面积。 #include using namespace std; class Rectangle { public : Rectangle() {}; Rectangle(int iLeftX,int iLeftY,int iRightX,int iRightY) { this->iLeftX=iLeftX; this
设计一个程序,定义一个矩形类,包括数据成员和函数成员。要求有构造函数、析构函数,完成赋值、显示、计算矩形的面积等接口
#include &lt;iostream&gt;using namespace std;class Ju{public:Ju();Ju(int i,int j):a(i),b(j){}void input(){cin&gt;&gt;a;cin&gt;&gt;b;}virtual void show(){cout&lt;&lt;"矩形的长为:"&lt;&lt;a&lt;&lt;endl;cou
c++ 内联成员函数
内联成员函数 类中的成员函数分为一般成员函数和内联成员函数。 把成员函数的代码放入类声明中,这种方式定义的类成员函数就叫内联成员函数(隐式定义)。程序使用内联成员函数的方式与一般的成员函数的调用方式一样。内联函数和外联函数之间的区别在于:定义一个内联函数时,编译器会把内联函数的代码替换到程序中(这样代码效率要高些)。使用非内联函数时,就不会这样做。 代码如下: #include u
非静态成员函数与this指针
this指针的本质This指针本质是一个函数参数,只是编译器隐藏起形式的,语法层面上的参数。this指针只能在非静态成员函数中使用,全局函数、静态函数都不能使用this指针。实际上,非静态成员函数默认的第一个参数为T* const this 例如,调用date.SetMonth(9) SetMonth(&date, 9),this帮助完成了这一转换 . 所以,this指针并非类的成员
1.编写一个名称为MyClass一个类,在该类中编写一个方法,名称为CountChar,返回值为整型,参数两个,第一个参数可以是字符串、整数、单精度、双精度,第二个参数为字符,方法功能返回第二个参数
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 {     class Program     {         static void Main(string[] args)         {
详解c++中类的六个默认的成员函数
类的6个默认的成员函数包括: 构造函数、析构函数、拷贝构造函数、赋值运算符重载函数、取地址操作符重载、const 修饰的取地址操作符重载。 (一)构造函数 构造函数,顾名思义,为对象分配空间,进行初始化。它是一种特殊的成员函数,具有以 下特点
设计包含静态数据成员的Student类
设计包含静态数据成员的Student类,在该类定义中包括: 数据成员:学号,年龄,分数score,及静态数据成员学生人数count; 定义成员函数用于设置和读取及显示学号,年龄,分数,累计学生人数;静态成员函数getCount( ) 用于返回总人数;外部函数average()用于求平均值。 在main函数中,输入某班同学的成绩,并调用上述函数求全班学生的平均分。   #include &...
【C++】类的六大默认的成员函数 之 构造函数
                                                                    以上就是类的六大默认的成员函数,这篇博客主要讲构造函数。剩下的五个成员函数后边会持续更出                                                 构造函数 一.构造函数的定义          构造函数是一个特殊的...
linux多线程创建时使用类成员函数作为参数
实际上所有线程都是用来处理C函数的,而不是C++类成员函数。标准库中提供一个API函数,这个函数以回调函数指针作为线程的执行代码并在单独的线程中调用回调函数。问题是在这样的线程库中不能创建执行对象成员函数的线程;只能使用普通的函数。因此,下列代码是失败的: #inclu
将类的成员函数作为回调函数的方法
如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员。由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时就会因为
C++基础:类与对象(对象调用成员函数 this指针)
1.一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 this指针的使用: 一种情况就是
C++中友元(友元函数和友元类)的用法和功能
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和
C++中各种数据成员及成员函数的定义及使用
1.类是自定义的数据类型.类与应用程序不同,类的功能虽然独立,但不能独立启动,就象汽车零件那样. 2.Class 是一种数据类型, 其变量为对象.对象包含有member variables(成员变量)和member functions(成员函数). class Date{ int year, month, day; public: void set(int y,int m,int d);
C++类模板的成员函数模板写法
这几天本来想将Lua_Tinker移植到Linux上去的,但是由于VC中的模板写法与gcc中的模板写法有些不同之处,比如下面一段代码:   struct pop_ { template static T invoke(lua_State *L, int index)   {   return lua2type::invoke(L, index);   } template<>
c++中回调函数为什么是静态的?静态成员函数如何调用非静态成员?
c++有静态成员与非静态成员。 在c++中,访问类的成员需要通过该类的对象,而静态成员还可以通过以下方式被访问:                                                 类名::成员变量名;      类名::成员函数名(参数); 回调函数一般是用来解耦的,因此在调用回调函数的类中,并不会有回调函数所属类的对象。此时就只能通过静态成员特有的访问方式,来...
C++中类成员函数作为回调函数的几种方法
写了一个C++小游戏,想法是间接别人的C语言,但是真正自己操作起来,还是会遇到各种问题,同时也让自己更真切的学到了一些过眼即忘,只有亲自动手才能学到的知识。
类的静态数据成员和类的静态成员函数
类的静态成员       采用static关键字来声明静态成员,静态成员在每个类中只有一个拷贝,由该类的所以对象共同使用和维护,从而实现在同一个类中不同对象间的数据共享。               用法:类名::标识符      对于静态数据成员,必须在文件作用域内采用类名限定对静态数据成员定                 对于静态函数成员与静态数据成员一样用static关键字声明 ,属于整个...
我们是很有底线的