指向类的指针

C++ 指向类的指针

C++ 类 & 对象 C++ 类 & 对象

一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符 ->,就像访问指向结构的指针一样。与所有的指针一样,您必须在使用指针之前,对指针进行初始化。

下面的实例有助于更好地理解指向类的指针的概念:

#include <iostream>

using namespace std;

class Box
{
   public:
      // 构造函数定义
      Box(double l=2.0, double b=2.0, double h=2.0)
      {
         cout <<"Constructor called." << endl;
         length = l;
         breadth = b;
         height = h;
      }
      double Volume()
      {
         return length * breadth * height;
      }
   private:
      double length;     // Length of a box
      double breadth;    // Breadth of a box
      double height;     // Height of a box
};

int main(void)
{
   Box Box1(3.3, 1.2, 1.5);    // Declare box1
   Box Box2(8.5, 6.0, 2.0);    // Declare box2
   Box *ptrBox;                // Declare pointer to a class.

   // 保存第一个对象的地址
   ptrBox = &Box1;

   // 现在尝试使用成员访问运算符来访问成员
   cout << "Volume of Box1: " << ptrBox->Volume() << endl;

   // 保存第二个对象的地址
   ptrBox = &Box2;

   // 现在尝试使用成员访问运算符来访问成员
   cout << "Volume of Box2: " << ptrBox->Volume() << endl;

   return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:

Constructor called.
Constructor called.
Volume of Box1: 5.94
Volume of Box2: 102
时间: 2024-10-04 09:11:30

指向类的指针的相关文章

指向类和结构体的指针

指向类的指针 class PointerTestClass { var intNum = 3 var another = 56 var another1 = 59 } 下面是验证代码 let pointer: UnsafeMutablePointer<PointerTestClass> = UnsafeMutablePointer.allocate(capacity: 3) let testInstance = PointerTestClass() pointer.initialize(rep

【读书笔记】C#高级编程 第十四章 内存管理和指针

(一)后台内存管理 1.值数据类型 Windows使用一个虚拟寻址系统,该系统把程序可用的内存地址映射到硬件内存中的实际地址,该任务由Windows在后台管理(32位每个进程可使用4GB虚拟内存,64位更多,这个内存包括可执行代码和加载的DLL,以及程序运行时使用的变量内容). 在处理器的虚拟内存中,有一个区域称为栈.栈存储不是对象成员的值数据类型. 释放变量时,其顺序总是与它们分配内存的顺序相反,这就是栈的工作方式. 程序第一次运行时,栈指针指向为栈保留的内存块末尾.栈实际上是向下填充的,即从

转载 c++指针 指针入门

这是一篇我所见过的关于指针的最好的入门级文章,它可使初学者在很短的时间内掌握复杂的指针操作.虽然,现在的Java.C#等语言已经取消了指针,但作为一个C++程序员,指针的直接操作内存,在数据操作方面有着速度快,节约内存等优点,仍是很多C++程序员的最爱.指针就像是一把良剑,就看你怎么去应用它! 什么是指针? 其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据.这是一个非常重要的概念,有很多程序和算法都是围绕指针而设

第四周 项目四-指向学生类的的指针

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: .cpp *作 者: 冷基栋 *完成日期:2014年3月29日 *版 本 号:v1.0 */ 问题 设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5

android菜鸟必看的60个技术经验

最初,android工程师在开发app时,会遇见各种各样的问题,比如数据加载.信息同步等等,其主要原因才开始,会android项目开发(http://www.maiziedu.com/course/android/)不熟悉,还有就是不知道如何处理才妥当,下面小编就整理了网上各位android工程师的一些技术经验分享给大家:  1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效.  2. 数据库表段

C++中的向上类型转换和向下类型转换+四种强制类型转换

转自博客:http://blog.csdn.net/wangweitingaabbcc/article/details/7720979# 在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分别描述的是子类向基类,和基类向子类的强制类型转换. 向上强制类型转换 切割:覆盖方法和子类数据丢失的现象生成切割(slice) class Base { public: int b; virtual void Test() { cout << "base" <<en

关于java可变(协变)返回类型的解说之一------------基类与派生类

在java代码中,人们惯性的认为一个方法中只能返回一种返回值或者无返回.博主在做开发过程中碰到了这样一种情况,安卓客户端请求数据,后台可能返回两种结果(1)访问令牌失效,无数据返回.(2)正常获取数据. 这样的情况下需要根据访问令牌标识来判断是否有数据返回.当无效时返回用户重新登录提示,正常时则返回数据.显然,返回的结果有两种,那么一个方法里面只能返回一种类型的禁锢使得开发起来略显笨拙.使得开发起来相当难受. 思考良久,又结合C++协变返回类型的启发.摘抄原文中的一句话:在C++中,只要原来的返

C/C++面试题目一

C/C++开发工程师面试题目(一)(附答案分析) 推荐:自己根据在面试中碰到做过的一些题目以及总结的题目,希望对面试的同学有所帮助. 一. 选择题 1. 下列类中(  )不是输入输出流类iostream的派生类. A. fstream      B. ofstream     C. strstream    D. ostrstream 答案:BD 解析:ofstream和ostrstream派生自ostream,而不是iostream.                              

C++四种强制类型转换

四种强制类型转换:static_cast    const_cast    dynamic_cast     reinterpret_cast 1.static_cast 编译器隐式执行的任何类型转换都可以由static_cast显示完成. ①用于类层次结构中基类和子类之间指针或引用的转换. 进行上行转换(把子类的指针或引用转换成基类表示)是安全的: 进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的. ②用于基本数据类型之间的转换,如把int转换成char,