【记录】C++中的类成员调用

代码如下:

// 文件包含与预处理.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <string>
#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;

class fruit
{
public:
	fruit(const string nst,const string cst) :name(nst), colour(cst)
	{

	}
	void print()
	{
		cout << name << endl;
		cout << colour << endl;
	}
	void Ck(int i)
	{
		for (; i < 10; i++)
		{
			printf("%d", i);
		}
	}
private:
	string name;
	const string colour;
};

int _tmain(int argc, _TCHAR* argv[])
{
	fruit apple = fruit("a", "1");
	fruit orange = fruit("b", "2");
	apple.print();
	orange.print();
	fruit a=a;
	a.Ck(6);
	getchar();
	return 0;
}

  在类成员中的公共函数,这里我申明了一个Ck函数名

里面嵌套了for循环,当调用的时候类初始化对象调用了Ck

直接通过类名去调用是不行的,这与C不同的地方在于初始化了一个对象去调用。

fruit a=a; 这一块网上有很多种解释,最后看反汇编也没个苗头,反正能调用出来就行了。

留张图。:

原文地址:https://www.cnblogs.com/blck/p/8476636.html

时间: 2024-10-14 04:06:18

【记录】C++中的类成员调用的相关文章

C++中static类成员

static局部变量 static局部变量确保不迟于在程序执行流程第一次经过该对象的定义语句时进行初始化 这种对象一旦被创建,在程序结束前不会被撤销.在该函数被多次调用的过程中,静态局部对象会持续存在并保存它的值. #include<iostream> #include<string> #include<assert.h> using namespace std; size_t count_calls() { static size_t ctr=0; return ++

java中各个类相互调用资源的原理

当我们要进行跨类的调用/使用的时候,比如当前类调用另一个类中的变量或方法时, 这时需要一定的条件,如果那些将要被调用的变量或方法是static(静态)变量,也叫类变 量,那么可以通过类名调用,相当于此时你有了使用那个类的权限,或者此时那个类中的 变量和方法这些资源对你开放了,可以简单的通过类名直接调用/使用;但是若那个类中没 有用static进行声明,默认是不对外使用的,只有那个类中的对象才可以调用/使用,也就 是说当前类没有权限使用那个类中的资源;这时只有先在本类中创建一个引用对象的变量 ,才

类成员函数可以为回调函数吗

关于类成员函数是否可以成为回调函数,我们首先需要明确几个定义,1. 什么是回调函数 2. 为什么要使用回调函数 3. 调用普通类成员函数和调用回调函数有什么区别 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数,如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数 为什么要使用回调函数? 因为可以把调用者与被调用者分开.调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型.某些限制条件(如返回值为int

C++继承中析构函数 构造函数的调用顺序以及虚析构函数

首先说说构造函数.大家都知道构造函数里就能够调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就能够调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数,仅仅有这样子类才干在构造函数里使用基类的成员,所以是创建子类时先调用基类的构造函数然后再调用自己的构造函数.通俗点说,你要用某些物品.但这些物品你没办法自己生产,自然就要等别人生产出来,你才干拿来用. 接着就是析构函数了,上面说到子类是将基类的成员变成自己的成员,那么基类就会仅仅存在子类中直到子类调

哗啦啦Python之路 - Day 8 - 多态,类成员,单例模式,异常处理

1. 多态(多种类型) 多态的体现如下: def func(arg): print(arg) func(1) func("alex") func([11,12,13]) #func可以是任何东西 #但是对于C#,java都不是这样,参数必须要指定类型 多态的缺点:在缺少注释的情况下,不知道arg是什么类型,它有什么用处.比如说如果确定好是个list的话,那就可以append().但是不确定的时候就不知道怎么用了. 2. 面向对象中的类成员 1) 字段 - 静态字段: 代码加载时已经创建

详解C++中基类与派生类的转换以及虚基类

很详细!转载链接 C++基类与派生类的转换在公用继承.私有继承和保护继承中,只有公用继承能较好地保留基类的特征,它保留了除构造函数和析构函数以外的基类所有成员,基类的公用或保护成员的访问权限在派生类中全部都按原样保留下来了,在派生类外可以调用基类的公用成员函数访问基类的私有成员.因此,公用派生类具有基类的全部功能,所有基类能够实现的功能, 公用派生类都能实现.而非公用派生类(私有或保护派生类)不能实现基类的全部功能(例如在派生类外不能调用基类的公用成员函数访问基类的私有成员).因此,只有公用派生

理解ATL中的一些汇编代码(通过Thunk技术来调用类成员函数)

我们知道ATL(活动模板库)是一套很小巧高效的COM开发库,它本身的核心文件其实没几个,COM相关的(主要是atlbase.h, atlcom.h),另外还有一个窗口相关的(atlwin.h), 所以拿来学习应该是很方便的.但是因为ATL的代码充满了模板和宏,内部还夹杂着汇编,所以如果没有比较丰富的C++模板和系统底层的知识,一般人会看得一头雾水. 下面我们主要分析一下ATL中的一些汇编代码. ATL中出现汇编代码主要是2处,一处是通过Thunk技术来调用类成员函数处理消息:还有一处是通过打开_

c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)

现在来测试一下在多重继承,虚继承,MI继承中虚继承中构造函数的调用情况. 先来测试一些普通的多重继承.其实这个是显而易见的. 测试代码: //测试多重继承中派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; }

为什么Python类成员的调用和声明必须有&quot;this&quot;?

Python的这种设计是作者从Modula-3中借鉴来的,在后面使用的情况看来,这个设计也是比较成功的.我们对比Python和C++讨论一下这个问题: Modula-3是上世纪80年代末数字设备公司(DEC)系统研究中心(SRC)和Olivetti研究中心(ORC)设计的一门语言.尽管这门语言没有在业界广泛的应用起来,但这么语言对后面被发明的Java, Python, Caml, C# 都产生了很多的影响 首先,调用的时候要求指定"this",让我们更明确的区分调用的是一个成员变量.函