原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/

在程序中经常需要访问对象中的成员。访问对象中的成员可以有3种方法:

  • 通过对象名和成员运算符访问对象中的成员;
  • 通过指向对象的指针访问对象中的成员;
  • 通过对象的引用变量访问对象中的成员。

通过对象名和成员运算符访问对象中的成员

例如在程序中可以写出以下语句:

   stud1.num=;  //假设num已定义为公用的整型数据成员

表示将整数1001赋给对象stud1中的数据成员num。其中“.”是成员运算符,用来对成员进行限定,指明所访问的是哪一个对象中的成员。注意不能只写成员名而忽略对象名。

访问对象中成员的一般形式为:
    对象名.成员名
不仅可以在类外引用对象的公用数据成员,而且还可以调用对象的公用成员函数,但同样必须指出对象名,如:

 stud1.display( );  //正确,调用对象stud1的公用成员函数
display( ); //错误,没有指明是哪一个对象的display函数

由于没有指明对象名,编译时把display作为普通函数处理。应该注意所访问的成员是公用的(public )还是私有的(private ),只能访问public成员,而不能访问private成员。如果已定义num为私有数据成员,下面的语句是错误的:

stud1.num=;  //num是私有数据成员,不能被外界引用

在类外只能调用公用的成员函数。在一个类中应当至少有一个公用的成员函数,作为对外的接口,否则就无法对对象进行任何操作。

通过指向对象的指针访问对象中的成员

前面已经介绍了指向结构体变量的指针(详情请猛击:指向结构体变量的指针),可以通过指针引用结构体中的成员。用指针访问对象中的成员的方法与此类似。如果有以下程序段:

    class Time
{
public : //数据成员是公用的
int hour;
int minute;
};
Time t, *p; //定义对象t和指针变量p
p=&t; //使p指向对象t
cout<<p->hour; //输出p指向的对象中的成员hour

在p指向t的前提下,p->hour,(*p).hour和t.hour三者等价。

还有以下代码参考

#include <iostream>
#include <string>
using namespace std; class _test_class
{
public:
int age;
string name;
void display()
{
cout <<"age is "<<age<<endl;
cout <<"name is "<<name<<endl;
}
}; int main(int argc,const char* argv)
{ _test_class class1,*pointer;
pointer = &class1;
pointer->age = ;
pointer->name = "zhouxuewei"; pointer->display();
return ;
}

通过对象的引用变量来访问对象中的成员

如果为一个对象定义了一个引用变量,它们是共占同一段存储单元的,实际上它们是同一个对象,只是用不同的名字表示而已。因此完全可以通过引用变量来访问对象中的成员。

如果已声明了Time类,并有以下定义语句:

 Time t1;        //定义对象t1
Time &t2=t1; //定义Time类引用变量t2,并使之初始化为t1
cout<<t2.hour; //输出对象t1中的成员hour

由于t2与t1共占同一段存储单元(即t2是t1的别名),因此t2.hour就是t1.hour。

如下参考代码:

#include <iostream>
#include <string>
using namespace std; class _test_class
{
public:
int age;
string name;
void display()
{
cout <<"age is "<<age<<endl;
cout <<"name is "<<name<<endl;
}
}; int main(int argc,const char* argv)
{ _test_class class1; _test_class &display_f = class1; //创建对象的引用
   display_f.age = ; //通过对象的引用访问对象中的成员    
   display_f.name = "zhouxuewei"; //通过对象的引用访问对象中的成员
   display_f.display(); //通过对象的引用访问对象中的成员    return ;
}

类和对象的简单使用

#include <iostream>
#include <string>
using namespace std; class _test_class
{
public:
int age;
string name;
}; void display2(_test_class &test)
{
cout <<"age is "<<test.age<<endl;
cout <<"name is "<<test.name<<endl;
} int main(int argc,const char* argv)
{ _test_class class1,class2,*pointer1,*pointer2; pointer1 = &class1;
pointer1->age = ;
pointer1->name = "zhouxuewei"; pointer2 = &class2;
pointer2->age = ;
pointer2->name = "wangmingxue"; display2(class1);
display2(class2);
return ;
}

c++对象成员的引用---12的更多相关文章

  1. PowerShell 管道和对象成员

    2.1  管道 在各种现代的shell中,均支持管道的概念. 管道的最大特点就是:  前一个命令的输出作为后一个命令的输入.cmd.bash均支持管道的概念,这里我就不多说了,下面我们说说PS中 管道 ...

  2. C++中的常对象和常对象成员

    常对象 常对象必须在定义对象时就指定对象为常对象. 常对象中的数据成员为常变量且必须要有初始值,如 Time const t1(12,34,36); //定义t1为常对象 这样的话,在所有的场合中,对 ...

  3. C++中对象的常引用

    直接传递对象名 用对象名做函数参数时,在函数调用时将建立一个新的对象,它是形参对象的拷贝. ================下面给出一个直接传递对象名的例子程序1.1================= ...

  4. OC中对象元素的引用计数 自动释放池的相关概念

    OC中数组对象在是如何处理对象元素的引用计数问题的,同时介绍一下自动释放池的相关概念 一.数组对象是如何处理对象元素的引用计数问题[objc]  view plaincopy 1. //   2. / ...

  5. C++,对象成员的访问

    成员变量和成员函数的访问可以采用以下几种访问方式:对象.成员变量名: 对象.成员函数名(实参列表)对象的指针->成员变量名; 对象的指针->成员函数名(实参列表)对象的引用.成员变量名对象 ...

  6. 小学生绞尽脑汁也学不会的python(面对对象-----成员)

    小学生绞尽脑汁也学不会的python(面对对象-----成员) 成员 class Person: def __init__(self, name, num, gender, birthday): # ...

  7. Python对象的循环引用问题

    目录 Python对象循环引用 循环引用垃圾回收算法 容器对象 生成容器对象 追踪容器对象 结束追踪容器对象 分代容器对象链表 何时执行循环引用垃圾回收 循环引用的垃圾回收 循环引用中的终结器 pyt ...

  8. C++返回对象和返回引用

    我们发现,在C++中,有些成员函数返回的是对象,而有些函数返回的又是引用. 返回对象和返回引用的最主要的区别就是函数原型和函数头. Car run(const Car &)     //返回对 ...

  9. 对象的this引用

    Java中的this关键字总是指向调用该方法的对象.根据this出现位置的不同,this作为对象的默认引用有两个功能: 1.构造器中引用该构造器正在初始化的对象. 2.在方法中引用调用该方法的对象. ...

随机推荐

  1. Android Studio build dex jar

    Gradle配置 Build配置文件gradle.build中添加如下task task clearJar(type: Delete) { delete 'build/outputs/mylib.ja ...

  2. javascript事件之:谈谈自定义事件

    对于JavaScript自定义事件,印象最深刻的是用jQuery在做图片懒加载的时候.给需要懒加载的图片定义一个appear事件.当页面图片开始出现时候,触发这个自定义的appear事件(注意,这里只 ...

  3. 转:不应该不知道C++的常用库

    不应该不知道C++的常用库 非常惭愧,我过去也仅仅了解boost.STLport这样的库,以及一些GUI库,但是居然有如此众多的C++库,其实令我惊讶.当然,这个问题应该辩证的看,对于拿来主义确实可以 ...

  4. iframe 子页面获取父页面的元素并且控制样式

    父页面的代码 <div id="div5" style="position:relative;height:500px;">             ...

  5. mysql 数据导出 常用总结

    mysqldump -t 数据库名 -uroot -p > xxx.sql 总结:上面的导出形式默认表结构和数据: -d表结构; -t数据;   -c, --complete-insert使用完 ...

  6. Swift 02.Array

    数组可以存放任意类型,初始化时候的类型 决定了数组后面可以添加什么类型的元素 let 不可变数组 let arrayC = [,,,,,,] var 可变数组 var arrayM = [,,,,,, ...

  7. ionic本质

    ionic本质一开发工具,ionic项目目录里在大堆东西,一堆插件(plugins),还有一堆npm包(node_modules),其实都是骗人的-( ̄▽ ̄-)~ 什么nodejs,npm只是为了解决 ...

  8. C语言基础--数组及相关

    概念: 一堆相同类型的数据的有序集合 格式: 元素类型  数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...

  9. jdk6提供的加密算法

    SUN:SHA1PRNG____sun.security.provider.SecureRandomSUN:SHA1withDSA____sun.security.provider.DSA$SHA1w ...

  10. bzero函数

    函数原型:void bzero(void *s,int n) 作用:bzero函数的作用是将s指针指向的地址的前n个字节清零. 头文件:#include <string.h> eg.