类的常成员变量和引用类型的成员的定义和初始化

class ConstRef
{
public:
    ConstRef(int ii);
private:
    int i;
    const int ci;
    int &ri;
};

//ConstRef::ConstRef(int ii)
//{
//    i = ii;  // ok
//    ci = ii; // error:cannot assign to a const
//    ri = ii; // error:ri was never initialized
//}

// ok:explicitly initialize reference and const members
ConstRef::ConstRef(int ii) :i(ii), ci(ii), ri(ii){};

只能通过构造函数的初始化列表来为const, reference or of  a class type that does not have a default-constructor进行初始化。

时间: 2024-12-29 11:41:24

类的常成员变量和引用类型的成员的定义和初始化的相关文章

成员变量包含引用类型(c++常问问题七)

成员变量里面如果包含了引用类型,应该如何初始化此成员变量才不报错 答:需要利用类的初始化列表来构造该成员对象 class dog1 { public: dog1(){m_strName = "peter";}; string m_strName; }; class cat1 { public: //这里用了两种方法来初始引用类型的成员变量,一种是new,一种是上层传入 //注意..如果构造函数直接构造对象并把对象付给成员,构造函数结束时成员指向的对象也被栈回收了,后果很严重,传入引用对

C++类特殊成员变量(引用、静态、常成员变量)的初始化操作

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同.这些特殊的类型的成员变量包括: a.引用 b.常量 c.静态 d.静态常量(整型) e.静态常量(非整型) 常量和引用,必须通过参数列表进行初始化. 静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末. 参考下面的代码以及其中注释: #include <iostream> using namespace std; class BClass { public: BClas

C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同.这些特殊的类型的成员变量包括: a.引用 b.常量 c.静态 d.静态常量(整型) e.静态常量(非整型) 常量和引用,必须通过参数列表进行初始化.    静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末. 参考下面的代码以及其中注释:#include <iostream>using namespace std; class BClass{public: BClass

OC语法2——OC的类,方法,成员变量的创建

类的创建: 与Java不同的是,OC创建一个类需要两个文件(.h和.m文件) 1> xxx.h:声明文件.用于声明成员变量和方法.关键字@interface和@end成对使用. 声明文件只是声明该类里成员变量和方法的格式(返回值类型,参数类型等),并不会实现它们. 在OC中继承用冒号表示,所有类都是继承于NSObject的,所以Sudent:NSObject.(这是和Java不同的,Java中所有类都继承于Object,但不用每定义一个类都写明继承关系,所有类都是默认继承于Object类的).

【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定义 (1) 接口部分定义格式 接口部分定义格式 : @interface className : superClassName { type _variableName; ... ... } - (type) methodName : type parameterName; @end -- 接口定义

JAVA类与对象(四)----成员变量与局部变量 、成员方法、构造方法

类体中的变量分为两部分.变量定义部分定义的变量为类的成员变量,在方法体中定义的变量和方法中涉及的变量称为局部变量. 成员变量和局部变量的区别: (1).成员变量在整个类中都有效,局部变量只在定义它的方法中有效 (2).成员变量分为实例成员变量(简称实例变量)和类变量(简称静态变量),如果在成员变量类型前加static,这个变量就称为类变量. (3).如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏 ,也就是说,这个成员变量在这个方法中暂时失效. 例: public class Benso

在类中成员变量的作用域类型

作用域类型一共有四种 1,@public 在任何地方都能直接通过成员变量名直接访问成员变量.(不推荐使用) 2,@private 只能在当前类的对象方法中直接通过成员变量名访问成员变量,在其他地方需要通过geter和seter方法访问.(@implementation中被声明成员变量的默认类型) 3,@protected 只能在当前类及其子类的对象方法中直接通过成员变量名访问成员变量,在其他地方需要通过geter和seter方法访问.(@interface中被声明成员变量的默认类型) 4,@pa

变量,final常量,类成员变量,static关键字,实例变量,静态变量,局部变量

1.常量:又称为final变量,在整个程序中仅能被赋值一次 final int num = 1215; num = 1216; // 错误,仅能赋值一次 2.类成员变量:不在方法中定义的变量即为成员变量,在方法体内定义的变量则为局部变量 成员变量含义:对象的属性 public class Book{ int id; string name; //两个成员变量 public String getName(){ int id = 0;  //局部变量,必须进行赋值或初始化 } } 3.static关

【C++】类的特殊成员变量+初始化列表

参考资料: 1.黄邦勇帅 2.http://blog.163.com/sunshine_linting/blog/static/448933232011810101848652/ 3.http://www.cnblogs.com/zhoug2020/archive/2012/08/31/2665451.html 一.初始化列表 1.假如定义了类 www 则 www::www (int i, int j, int k):x (i), y(j), z(k){},定义了一个带 i,j,k 三个参数的构