C++类数据成员为Const数组怎么初始化

问题描述

C++类数据成员为Const数组怎么初始化

class A
{
public:
A(){}
~A(){}

private:
const int a[3];
};

const int a[3]怎么初始化?求教高手

解决方案

这是C++98/03的缺陷。
如果你的编译器支持C++11可以在构造函数初始化器中初始化类成员数组

 #include<iostream>
using namespace std;
class A
{
public:
    A() :a{1,2,3}{}
    ~A(){}
private:
    const int a[3];
};

不支持C++11的话,或者声明成static的?

 #include<iostream>
using namespace std;
class A
{
public:
    A(){}
    ~A(){}
private:
    static const int a[3];
};

const int A::a[3] = { 1, 2, 3 };

解决方案二:

C++类的const、static和const static数据成员的初始化
C++类的const、static和const static数据成员的初始化
C++类的数据成员初始化

解决方案三:

const修饰的变量只能在声明的时候初始化,const int a[3] = {1,2,3};,之后任何地方都不能修改a的内容

时间: 2025-01-21 01:25:57

C++类数据成员为Const数组怎么初始化的相关文章

c++-const成员函数内将该类的数据成员变成const?

问题描述 const成员函数内将该类的数据成员变成const? #include using namespace std; class A { public: void action() { cout << "Action in class A!" << endl; } }; class B { A a; int s; public: void action() { cout << "Action in class B!" <

c语言-C语言中的指针和数组的初始化

问题描述 C语言中的指针和数组的初始化 char a[]=""abcdef"";char *p =""cdefg"";a[1]='A';p[1]='A'; 这段代码有什么问题?#include int main(){ char amessage[]=""now is the time""; char *pmessage = ""now is the time"

c语言-局部变量和局部变量数组的初始化,分别在哪里完成

问题描述 局部变量和局部变量数组的初始化,分别在哪里完成 定义一个函数如下: test() { char a: char b[10]; } 编译后test的入口地址假设为0x5000; 改写后 test() { char a=0: char b[10]; } 编译后test的入口地址也为0x5000; 但是这样改写后: test() { char a: char b[10]={0}; } 编译后test的入口地址变为了0x500A; 为什么会有这样的区别,数据和char变量的初始化不一样吗? 解

ios-通过名称对数组进行初始化

问题描述 通过名称对数组进行初始化 要初始化数组中的字符串,如下格式: -(IBAction)btnSubmit:(UIButton *)sender { NSString *phone = phoneNumber.text; NSLog(@"Phone :%@",phone); NSString *TxtUserName = userName.text; NSString *TxtEmailId = emailId.text; NSArray *details = [NSArray

c语言中字符数组系统初始化为什么?

问题描述 c语言中字符数组系统初始化为什么? c语言中声明一个字符数组,如果自己没有初始化,那系统初始化为什么?是被初始化为空字符吗?我的实验结果好像是空字符 解决方案 在debug调试下,vc会将它初始化为0xcc 0xcc...,也就是"烫烫烫烫...",release运行的时候,vc++不会初始化,内容随机,但是很大可能是0,因为只有在堆内存被重新分配的时候,才可能出现其他值. 其它编译器不好说. 解决方案二: C语言字符数组的初始化C语言字符数组的初始化

小程序-关于数组元素初始化有一些小问题

问题描述 关于数组元素初始化有一些小问题 RT 最近写的几个小程序中几乎所有的数组元素初始化都有问题,求大神看看是哪里有问题 //求一个4*4二维数组的对角线上的值的和 #include<stdio.h> int main (void) { int array[3][3],sum = 0; int i = 0,j = 0; printf("Please enter the numbers(16 numbers inside):n"); for (i = 0;i <=3

link中定义list有没有办法像数组那样初始化容量?

问题描述 link中定义list有没有办法像数组那样初始化容量? link中定义list有没有办法像数组那样初始化容量? 解决方案 可以的,比如 List<int> list = new List<int>(10); //创建一个初始有10个元素的List

c++ 二维数组-C++构造函数中二维数组如何初始化的问题

问题描述 C++构造函数中二维数组如何初始化的问题 cannot convert '< brace-enclosed initializer list >' to 'int' in assignment这个是怎么回事 解决方案 你要不把代码也写进来吧,这也我们也不好分析.

C++ 数组的初始化方法详解

C++ 数组的初始化方法详解,数据名内涵为数组这种数据结构,在arrayTest函数体内,str是数组名,那为什么sizeof的结果却是指针的长度?这是因为: (1)数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针: (2)很遗憾,在失去其内涵的同时,它还失去了其常量特性,可以作自增.自减等操作,可以被修改.   先看数组初始化 #include <iostream> using std::cout; using std::endl; #include <ioman