c++对象成员的引用---12
原创博客:转载请标明出处: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的更多相关文章
- PowerShell 管道和对象成员
2.1 管道 在各种现代的shell中,均支持管道的概念. 管道的最大特点就是: 前一个命令的输出作为后一个命令的输入.cmd.bash均支持管道的概念,这里我就不多说了,下面我们说说PS中 管道 ...
- C++中的常对象和常对象成员
常对象 常对象必须在定义对象时就指定对象为常对象. 常对象中的数据成员为常变量且必须要有初始值,如 Time const t1(12,34,36); //定义t1为常对象 这样的话,在所有的场合中,对 ...
- C++中对象的常引用
直接传递对象名 用对象名做函数参数时,在函数调用时将建立一个新的对象,它是形参对象的拷贝. ================下面给出一个直接传递对象名的例子程序1.1================= ...
- OC中对象元素的引用计数 自动释放池的相关概念
OC中数组对象在是如何处理对象元素的引用计数问题的,同时介绍一下自动释放池的相关概念 一.数组对象是如何处理对象元素的引用计数问题[objc] view plaincopy 1. // 2. / ...
- C++,对象成员的访问
成员变量和成员函数的访问可以采用以下几种访问方式:对象.成员变量名: 对象.成员函数名(实参列表)对象的指针->成员变量名; 对象的指针->成员函数名(实参列表)对象的引用.成员变量名对象 ...
- 小学生绞尽脑汁也学不会的python(面对对象-----成员)
小学生绞尽脑汁也学不会的python(面对对象-----成员) 成员 class Person: def __init__(self, name, num, gender, birthday): # ...
- Python对象的循环引用问题
目录 Python对象循环引用 循环引用垃圾回收算法 容器对象 生成容器对象 追踪容器对象 结束追踪容器对象 分代容器对象链表 何时执行循环引用垃圾回收 循环引用的垃圾回收 循环引用中的终结器 pyt ...
- C++返回对象和返回引用
我们发现,在C++中,有些成员函数返回的是对象,而有些函数返回的又是引用. 返回对象和返回引用的最主要的区别就是函数原型和函数头. Car run(const Car &) //返回对 ...
- 对象的this引用
Java中的this关键字总是指向调用该方法的对象.根据this出现位置的不同,this作为对象的默认引用有两个功能: 1.构造器中引用该构造器正在初始化的对象. 2.在方法中引用调用该方法的对象. ...
随机推荐
- 一键式Spring集成工具 Spring Boot
最近公司使用Spring boot进行开发,稍微了解一下,不过自我感觉把集中式配置applicate.properties搞明白,注解用过Spring MVC的boot绝对没问题的 比如拦截器:@As ...
- Delphi IDE 设置
显示编译进度 Tools/Environment Options
- c++虚函数的作用是什么?
<深入浅出MFC>中形容虚函数是执行一般化操作,一直没有领悟要点.现在的体悟是抽象,先前考虑问题都是由抽象到具象,比如下文中的示例,由上(虚基类的「怪物」)至下(派生类的三个子类「狼」「蜘 ...
- 主页面获取iframe 的子页面方法。
父页面parent.html <html> <head> <script type="text/javascript"> function sa ...
- Oracle系统表整理+常用SQL语句收集
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- KindEditor4.1.10,支持粘贴图片(转载!)
本人扩展了KindEditor4.1.10,使得他能够在Chrome和IE11中直接粘贴复制的图片(比如通过截图工具把图片直接保存在剪切板中),然后调用上传URL上传图片 方法,修改kindedito ...
- 笨办法学 Python (Learn Python The Hard Way)
最近在看:笨办法学 Python (Learn Python The Hard Way) Contents: 译者前言 前言:笨办法更简单 习题 0: 准备工作 习题 1: 第一个程序 习题 2: 注 ...
- Probit回归模型
Probit模型也是一种广义的线性模型,当因变量为分类变量时,有四种常用的分析模型: 1.线性概率模型(LPM)2.Logistic模型3.Probit模型4.对数线性模型 和Logistic回归一样 ...
- PHP 二维码解码 (读取二维码)
#zbar wget http://ncu.dl.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.bz2 yum install gtk2 g ...
- HTML 图像<img>
定义和用法: img元素向网页中嵌入一副图像. 请注意:从技术上讲,<img>标签并不会在网页中插入图像,而是从网页上链接图像.<img>标签创建的是被引用图像的占位空间. 属 ...