C++ 类中的引用成员变量

C++】-和对象之初始化列表(explicit的简单介绍)(下) 讲解初始化列表,explicit的简单理解 阅读详情

类成员引用。

注意点:


1.必须在初始化列表中指定。

2.所指定的变量的生存期一定要长于改类的生存期。


错误&正确例子:

using namespace std;
class classB;
class classA{
public:
	//classA(classB p); 错误例子
	classA(classB& p);  //正确使用
	classB &a_obj;
};
class classB{
public:
	int b_a;
	classB(int a=10){b_a=a;};
	~classB(){b_a=0;}
};
	classA::classA(classB& p):a_obj(p){};
	//classA::classA(classB p):a_obj(p){};  错误例子
int main(){
	classB b(5);
	classA a(b);
	cout<<a.a_obj.b_a<<endl;
	return 0;
}


错误分析:
classA(classB p);
因为构造函数的参数为按值传递的classB,因此生存期仅为构造函数执行期间。当构造函数退出,将会销毁p对象。而a_obj为classB的引用,p的别名,因此出错。

Mac上IDEA的PlantUML插件报错‘找不到Graphviz’?手把手教你用Homebrew搞定(附阿里云镜像避坑) 本文详细解决了Mac上IDEA的PlantUML插件报错‘找不到Graphviz’的问题,通过Homebrew安装Graphviz并配置阿里云镜像源,特别针对Apple Silicon芯片用户提供了优化方案。文章还涵盖了IDEA中PlantUML插件的正确配置和常见问题排查,帮助开发者高效使用PlantUML进行UML图表设计。 阅读详情

相关推荐

C++的前向声明

C++中可以只对进行声明,而不对其进行定义,例如 class MyClass; 该声明会向程序引入名字MyClass并且指明MyClass是一种型。这种对的声明叫做前向声明。 1 使用前向声明 1.1 声明指针或引用 在声明了之后,可以定义指向这种的指针或引用。 MyClass* pmc; MyClass& rmc = *pmc; 此时,只是说明pmc是一个指针,该指针指向了MyClass,可以不必关心MyClass具体的结构,引用变量rmc的情况也是一样的。 1.

hou09tian的博客 1818

c++内定义引用成员

c++内可以定义引用成员变量,但要遵循以下三个规则: 1、不能用默认构造函数初始化,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。 2、构造函数的形参也必须是引用型 3、不能在构造函数里初始化,必须在初始化列表中进行初始化。 构造函数分为初始化和计算两个阶段,前者对应成员初始化链表,后者对应构造函数函数体。引用必须在初始化阶段,也即在成员初始化链表中完成,否则编译时会报错...

weixin_42579072的博客 1万+

的组合和前向引用

C++中,的组合是一种对象关系的建立方式,其中一个包含另一个的对象作为其成员变量。综上所述,C++中的的组合允许一个包含另一个的对象作为其成员变量,从而建立对象之间的关系。的组合是通过在一个中包含另一个的对象来建立对象关系。被包含的通常称为成员,而包含它的称为宿主。通过组合,宿主可以使用成员的成员函数和成员变量,以及调用成员的构造函数和析构函数。前向引用是指在使用一个之前,在的定义之前声明该的存在,以告知编译器该将在稍后定义。的对象作为其成员变量

Meta_C的博客 159

C++---类成员变量定义为引用

摘要:类成员变量是可以定义为引用型的,但是我们需要注意一下用法 note1:在中定义引用变量, 必须要在初始化列表中初始化该成员变量(const 型数据成员也必须在初始化列表中进行初始化) #include <iostream> using namespace std; class A { public: A(int k):a(n){ // 必须要在...

weixin_30379973的博客 769

C++中定义引用成员变量

C++中定义引用成员变量

Lakers 913

C++ 引用对象成员的三种方式

在程序中经常需要访问对象中的成员。访问对象中的成员可以有3种方法: 1.通过对象名和成员运算符访问对象中的成员; 2.通过指向对象的指针访问对象中的成员; 3.通过对象的引用变量访问对象中的成员。 通过对象名和成员运算符访问对象中的成员 例如在程序中可以写出以下语句:   stud1.num=1001;  //假设num已定义为公用的整型数据成员 表示将整数1001赋给对象stud

妙心的专栏 5098

python入门--input()函数与if判断语句(三)

       今天写一下前段时间学习的python资料。 一、input()函数的使用        我认为input()函数是人向计算机的说话,也就是通过键盘输入信息,电脑input函数处理你输入的信息。 test = input("请问你叫什么名字?") print(test)        注

qq_48626285的博客 4059

C++ 中的引用成员变量初始化

刚遇到一个问题,需要的类成员为指针的引用,而引用不能在构造函数里初始化,必须在初始化列表中进行初始化,并且需要该引用在构造函数中的形参必须为引用形式 1: class ThreadParam { 2: public: 3: ThreadParam(CNotifyWindow* &pNotify...

weixin_30823227的博客 704

c++成员变量详解

C++ 成员变量的一部分,用于存储的状态或属性。C++ 提供了多种型的成员变量,包括普通成员变量、静态成员变量、常量成员变量、可变成员变量(mutable)和引用成员变量。理解和使用这些成员变量型,可以帮助开发者更好地设计和实现及其行为,确保数据的封装和安全性。引用成员变量:指向其他变量引用,必须在初始化列表中初始化。私有成员变量:只能在内部访问,通常通过公共成员函数访问。保护成员变量:在外部不可访问,但在派生中可以访问。普通成员变量:每个对象有自己独立的成员变量

m0_49133355的博客 1038

C++ 引用C++深度解析:引用成员变量的初始化及其在模板编程中的应用

C++编程中,引用(Reference)是一种特殊的型,它为我们提供了一种强大的工具,可以让我们以不同的方式操作和访问对象。引用成员变量(Reference Member Variables)在设计和对象模型中扮演着重要的角色。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1163

c++成员变量的初始化总结

c++成员变量的初始化总结  关于这个问题是引起来源于一则面试问题:引用成员变量如何初始化?回答的不是很确定,于是对这个问题研究一下。1、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。class CA{public:int data;……public:CA();……};CA:

chenkaiss的专栏 484

C++ 成员变量是别的的对象

•在成员函数中,可以将this指针当参数传递,也可以返回this指针,或返回通过this指针拿到的对象 /* 成员变量是别的的对象 */ #include using namespace std; //日期 class Date { int year,month,day; public: //构造方法 Date(){ cout <<

iOS小菜鸟的专栏 3418

图解c++中的this指针

C++ 中,this指针是一个特殊的指针,它被隐式定义在所有非静态成员函数中。this指针指向调用对象,即调用成员函数的对象的地址。通过使用this指针,成员函数能够访问调用它的对象的成员变量和其他成员函数。

dabingbigice的博客 1964

构造函数中成员变量初始化顺序问题

在定义的对象的时候,如果中有定义构造函数,则调用用户自己定义的构造函数,没有则调用默认构造函数。 如果用户定义的构造函数是以参数列表的形式初始化成员变量,则成员变量的初始化顺序是按照成员变量的声明的顺序。 具体看下面的例子和输出结果: #include using namespace std; int i=1; class A { private: int i1; in

yzl20092856的专栏 1897

c++ 结构体 指针 引用 链表

c++ 结构体 指针 引用 链表的相应知识。

m0_74021592的博客 501

c++ 中常量成员,和引用成员初始化

<br />/*******************************************************<br /> *author:彭晓林<br /> *copyright: 版权所有,翻版不究<br /> *function: 类成员常量和引用的初始化示例<br /> ******************************************************/<br />#include <iostream><br />#include <string><br />

DriverMonkey的专栏 1597

C++与对象初阶 引用 | 封装 | 对象模型 | this指针

成员函数如果在中定义,编译器可能会将它当作内联函数来处理。 注意,是可能。并不是说一定会成为内联函数,之前讲内联函数的时候我们也说了。 内联函数对编译器来说也只是一个建议。至于到底会不会成为内联是由编译器来决定的。 这也不取决于编译器心情,心情好就让你成为内联,心情差就不让…… 而是!取决于编译器看这个函数符不符合条件,一般一个函数太长(大概是十几行左右), 或者函数是一个递归,编译器就不会让它成为内联了。 的作用域 定义了一个新的作用域,的所有成员都在的作用域中。 在外定义成员

qq_61386381的博客 628

C++】【和对象】初始化列表

初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。注意:1.中的每个成员在初始化列表中只能出现一次(初始化只能初始化一次)2.中有以下成员时,只能用初始化列表将他们初始化:(1) 引用成员变量(2) const成员变量(3) 自定义型成员(且该没有默认构造函数时):尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义成员变量,一定会先使用初始化列表初始化。

Legend_6zh的博客 496

C++继承时子同名成员变量的问题

代码如下: C/C++ code #includeiostream.h> class Base { public: int a; Base() { a=0; cout"I`m base Begin"endl; } int Print() { coutaendl; re

千里之行始于足下 8372

前言:关于作者吴秋生博士与此书简介

博士现为田纳西大学,诺克斯维尔分校,地理系的副教授。他的研究兴趣包括地理信息科学(GIS)、遥感和环境建模。更具体地说,对应用地理空间大数据、机器学习和云计算(例如,谷歌地球引擎、微软行星计算机)来研究环境变化,特别是地表水和湿地淹没动态。吴博士是开放科学和可重复研究的倡导者。他开发了几个用于高级地理空间分析的开源软件包(例如,吴博士还在YouTube上发布了数百个有关GIS和地图绘制的视频。更多有关他的开源项目信息,请访问GitHub(查看他的YouTube频道。.....................

韩天放 6027

福昕高级PDF编辑器专业版2024.2.0.25138绿色精简版.7z

福昕高级pdf编辑器是福昕软件开发的pdf编辑器,能够对PDF文本,PDF图片,PDF流程图进行修改,添加,删除等编辑操作,还有PDF文档注释,PDF文档共享审阅,PDF文档页面旋转等功能,赶快下载使用吧!

上一篇: C++ 传递机制,自己总结(平台VS2010)
下一篇: The notes of Algorithms ---- Asymptotic Notation
杰式囧诺
博客等级 码龄16年 20粉丝 33原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值