类的成员变量初始化总结

C++ static与const用法详解 目录 static的作用: 对普通变量: 1.局部变量: 2.全局变量 对类中变量: 1.成员变量 2.成员函数 const的作用: static的作用: 对普通变量: 1.局部变量: 在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。 1)内存中的位置:静态存储区 2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化) 3)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用... 阅读详情

1. C++变量的初始化方式

首先把需要初始化的成员变量分为几类:

Ø  一般变量(int)

Ø  静态成员变量(static int)

Ø  常量(const int )

Ø  静态常量(static const int)

 对应的初始化方式是:

Ÿ  一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化

Ÿ  静态成员变量必须在类外初始化

Ÿ  常量必须在初始化列表里初始化

Ÿ  静态常量必须只能在定义的时候初始化(定义时直接初始化)

 

举一个简单的例子:

  1. #include <iostream>   
  2. #include <string>   
  3. using namespace std;   
  4. class Test   
  5. {   
  6. private:   
  7.     int a;   
  8.     static int b;   
  9.     const int c;   
  10.     static const int d=4;   
  11. public:   
  12.     Test():c(3)     //a(1)或者在初始化列表里初始化   
  13.     {   
  14.         a=1;   
  15.     }   
  16. };   
  17. int Test::b=2;  
  18. void main()   
  19. {   
  20.     Test t;   
  21. }  

 

 

2. 类成员变量初始化顺序

C++

有如下几条:

1构造函数初始化列表的变量优先于构造函数(至少明显的写在前面)  (若都在初始化列表中初始化,则按声明顺序初始化,与初始化列表中的顺序无关)

2静态成员变量先于实例变量

3父类成员变量先于子类成员变量

4父类构造函数先于子类构造函数

 举一个例子:

  1. #include <iostream>  
  2. #include <string>  
  3. using namespace std;  
  4. class Test  
  5. {  
  6. public:  
  7.     Test(string n)  
  8.     {  
  9.         cout<<n<<endl;  
  10.     }  
  11. };  
  12. class Base  
  13. {  
  14. public:  
  15.     static Test* a;  
  16.     Test* b;  
  17.     Test* c;  
  18.     Base():b(new Test("b"))  
  19.     {  
  20.         c=new Test("c");  
  21.     }  
  22.     virtual ~Base()  
  23.     {  
  24.         if(a) delete a;//似乎是很欠妥的做法  
  25.         if(b) delete b;  
  26.         if(c) delete c;  
  27.     }  
  28. };  
  29. Test* Base::a=new Test("a");  
  30. class Derived:Base  
  31. {  
  32. public:  
  33.     static Test* da;  
  34.     Test* db;  
  35.     Test* dc;  
  36.     Derived():db(new Test("db"))  
  37.     {  
  38.         dc=new Test("dc");  
  39.     }  
  40.     ~Derived()  
  41.     {  
  42.         if(da) delete da;//似乎是很欠妥的做法  
  43.         if(db) delete db;  
  44.         if(dc) delete dc;  
  45.     }  
  46. };  
  47. Test* Derived::da=new Test("da");  
  48.   
  49. void main()  
  50. {  
  51.     Derived d;  
  52. }  

结果是:

a
da

b

c

db

dc


 

java和C#语言

1   类成员变量初始化先于类的构造函数

2   静态成员变量先于实例变量

3   父类成员变量先于子类成员变量 (C#相反)

4   父类构造函数先于子类构造函数

举一个java的例子:

  1. class Base  
  2. {  
  3.     public static Test a=new Test("a");  
  4.     public static Test b;  
  5.     public Test c=new Test("c");  
  6.     public Test d;  
  7.     static  
  8.     {  
  9.         b=new Test("b");  
  10.     }  
  11.     public Base()  
  12.     {  
  13.         d=new Test("d");  
  14.     }  
  15.     public static void main(String[] args) {  
  16.         new Derived();  
  17.     }  
  18. }  
  19. class Derived extends Base  
  20. {  
  21.     public static Test da=new Test("da");  
  22.     public static Test db;  
  23.     public Test dc=new Test("dc");  
  24.     public Test dd;  
  25.     static  
  26.     {  
  27.         db=new Test("db");  
  28.     }  
  29.     public Derived()  
  30.     {  
  31.         dd=new Test("dd");  
  32.     }  
  33. }  
  34.   
  35. class Test  
  36. {  
  37.     public Test (String name) {  
  38.         System.out.println(name);  
  39.     }  
  40. }  

运行结果是:

a

b

da

db

c

d

dc

dd

C++ static、const和static const 以及它们的初始化

       const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。

       static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。

      在C++中,static静态成员变量不能在类的内部初始化。在类的内部只是声明,定义必须在类定义体的外部,通常在类的实现文件中初始化,如:double Account::Rate=2.25;static关键字只能用于类定义体内部的声明中,定义时不能标示为static

      在C++中,const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。

      const数据成员 只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类的声明中初始化const数据成员,因为类的对象没被创建时,编译器不知道const数据成员的值是什么。

      const数据成员的初始化只能在类的构造函数的初始化列表中进行。要想建立在整个类中都恒定的常量,应该用类中的枚举常量来实现,或者static cosnt。

  1. class Test  
  2. {  
  3. public:  
  4.       Test():a(0){}  
  5.       enum {size1=100,size2=200};  
  6. private:  
  7.       const int a;//只能在构造函数初始化列表中初始化  
  8.        static int b;//在类的实现文件中定义并初始化  
  9.       const static int c;//与 static const int c;相同。  
  10. };  
  11.   
  12. int Test::b=0;//static成员变量不能在构造函数初始化列表中初始化,因为它不属于某个对象。  
  13. cosnt int Test::c=0;//注意:给静态成员变量赋值时,不需要加static修饰符。但要加cosnt  

       cosnt成员函数主要目的是防止成员函数修改对象的内容。即const成员函数不能修改成员变量的值,但可以访问成员变量。当方法成员函数时,该函数只能是const成员函数。

      static成员函数主要目的是作为类作用域的全局函数。不能访问类的非静态数据成员。类的静态成员函数没有this指针,这导致:1、不能直接存取类的非静态成员变量,调用非静态成员函数2、不能被声明为virtual

关于static、const、static cosnt、const static成员的初始化问题:

1、类里的const成员初始化:

在一个类里建立一个const时,不能给他初值

  1. class foo  
  2. {  
  3. public:  
  4.       foo():i(100){}  
  5. private:  
  6.       const int i=100;//error!!!  
  7. };  
  8. //或者通过这样的方式来进行初始化  
  9. foo::foo():i(100)  
  10. {}  

2、类里的static成员初始化:

      类中的static变量是属于类的,不属于某个对象,它在整个程序的运行过程中只有一个副本,因此不能在定义对象时 对变量进行初始化,就是不能用构造函数进行初始化,其正确的初始化方法是:

数据类型 类名::静态数据成员名=值;

[c-sharp] view plain copy
  1. class foo  
  2. {  
  3. public:  
  4.       foo();  
  5. private:  
  6.       static int i;  
  7. };  
  8.   
  9. int foo::i=20;  
  10. 这表明:  
  11. 1、初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆  
  12. 2、初始化时不加该成员的访问权限控制符private、public等  
  13. 3、初始化时使用作用域运算符来表明它所属的类,因此,静态数据成员是类的成员而不是对象的成员。  

3、类里的static cosnt 和 const static成员初始化

      这两种写法的作用一样,为了便于记忆,在此值说明一种通用的初始化方法:

  1. class Test  
  2. {  
  3. public:  
  4.       static const int mask1;  
  5.       const static int mask2;  
  6. };  
  7. const Test::mask1=0xffff;  
  8. const Test::mask2=0xffff;  
  9. //它们的初始化没有区别,虽然一个是静态常量一个是常量静态。静态都将存储在全局变量区域,其实最后结果都一样。可能在不同编译器内,不同处理,但最后结果都一样。  

这是一个完整的例子:

  1. #ifdef A_H_  
  2. #define A_H_  
  3. #include <iostream>  
  4. using namespace std;  
  5. class A  
  6. {  
  7. public:  
  8.       A(int a);  
  9.       static void print();//静态成员函数  
  10. private:  
  11.       static int aa;//静态数据成员的声明  
  12.        static const int count;//常量静态数据成员(可以在构造函数中初始化)  
  13.        const int bb;//常量数据成员  
  14. };  
  15. int A::aa=0;//静态成员的定义+初始化  
  16. const int A::count=25;//静态常量成员定义+初始化  
  17. A::A(int a):bb(a)//常量成员的初始化  
  18. {  
  19.       aa+=1;  
  20. }  
  21. void A::print()  
  22. {  
  23.       cout<<"count="<<count<<endl;  
  24.       cout<<"aa="<<aa<<endl;  
  25. }  
  26. #endif  
  27. void main()  
  28. {  
  29.       A a(10);  
  30.       A::print();//通过类访问静态成员函数  
  31.       a.print();//通过对象访问静态成员函数  
  32. } 

Cpp -C++类中成员变量的初始化总结 1. 普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。 class CA { public: int data; public: CA(); }; CA::CA():data(0) //……#1……初始化列表方式 { //data = 0;//……#1……赋值方式 };2、static 静 阅读详情

相关推荐

关于C++ 类数据成员初始化的一点总结【为什么类定义中不能初始化成员变量】

往往被初学者忽视的是,C++类中的数据初始化是有jia

qqaiustc的专栏 8003

const存储在哪个区_C++之Static与Const

static静态成员Static意为静态成员,若Static修饰的成员位于C++类中,那么Static就实现了同一个类,多个对象共享数据,协调行为的目的。静态变量具有全局变量的优势,又不会像全变量一样被滥用。C++中用于管理静态变量,就需要用到静态函数。C++中类的静态成员,属于类,也属于对象,但终归属于类。(比较绕,直接记做属于类)特点 共享 : static 成员变量实现了同族类对象间信息共享...

weixin_32518073的博客 2102

Kafka延迟队列实现方案全解析

$ \text{时间轮} = \text{环形数组} + \text{分层设计} $$需要补充代码实例或特定场景的优化方案可进一步细化,此大纲已覆盖核心技术路径。

lz989796的博客 817

【C++私房菜】语法中的static和const

(1)静态成员函数中不能调用非静态成员。(2)非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数中是可以调用静态成员的。(3)静态成员变量使用前必须先初始化(如。

无敌岩雀的博客 1045

车载以太网SOMEIP入门必看:从服务发现到事件订阅,一次搞懂三种核心通信模式(附报文实例)

本文深入解析车载以太网SOME/IP的三种核心通信模式:服务发现、方法调用和事件订阅,通过真实报文实例和仿真工具演示,帮助开发者快速掌握这一关键技术。文章特别强调服务发现机制的基础作用,并详细介绍了Request/Response与Fire&Forget两种方法调用模式的应用场景,为智能汽车网络通信开发提供实用指南。

weixin_30955617的博客 111

【计算摄影】相机成像原理:从光到JPEG图像

本文我们将从最基本的相机成像原理开始论述,再讨论光线进入相机后,经过一系列处理成为JPEG图像的大致流程。

qq_35149975的博客 2万+

C++编程 静态static、常量const 的使用

C++编程 静态static、常量const 的使用

m0_56051805的博客 3122

Plecs电力电子仿真专业教程-第一季 第一节 Plecs简介

Plces 电力电子仿真专业教程系列依托专业的电力电子仿真软件Plecs对各种电力电子常用的拓扑及实际设计的方案进行系统及仿真与软件代码仿真实践。通过对各种电路仿真原理的讲解及专业C语言代码程序的编写,提升学员的系统设计能力,软件编程能力与理论分析能力。

3645

C++中关键字static和const的使用

本文主要内容是C++中static和const的使用。

wst1529210144的博客 1721

芯片工程师-必须掌握的linux操作-第一讲

一个从材料专业,转行芯片验证初级工程师,自己也是从0基础开始学习入门,更知道0基础的人应该怎么去学习。 现在工作三个多月了,特地花时间给大家写这篇文章。希望能关注、支持下。 为什么芯片验证工程师必须要学习linux命令? 答: ① 芯片工程师主要的职责,就是与IC设计工程师和系统工程师密切合作,开发验证平台,能够根据项目要求产生测试计划,产生代码及功能覆盖率,撰写验证报告。 ②简单点说,主要工作内容,是编写代码去验证设计的对不对。 那么问题来了,编写代码,在什么环境呢,我现在告诉你,都是在linux系统中进

小白蒋-材料转行芯片验证 4841

【N32L40X】学习笔记08-定时器的基本定时功能-超时功能

【代码】【N32L40X】学习笔记08-定时器的基本定时功能-超时功能。

Car12 827

[C++] 类中成员变量的初始化总结二

C++类中成员变量的初始化总结一三种成员变量初始化位置对于类的成员对象的初始化成员数组的初始化基本类型的成员数组对象成员数组补充一下动态数组的初始化vector作为成员变量的初始化 C++类中成员变量的初始化总结一 以前写过一篇C++类中成员变量的初始化总结一, 现在发现还得在补充一些 三种成员变量初始化位置 对于C++11来说,类的成员变量有三个位置进行初始化: 声明时初始化 初始化列表初始化( 成员变量初始化的顺序是按照在那种定义的顺序) 以下三种情况下必须使用初始化成员列表 一、需要初.

selfsongs 3924

C# Winform使用Monaco打造代码编辑器

本文介绍了如何在Winform项目中集成Monaco代码编辑器。通过NuGet安装WebView2控件,创建monaco-editor.html文件加载编辑器,并实现与C#代码的交互。关键步骤包括:初始化WebView2环境、配置Monaco编辑器参数、设置代码变更监听事件以及处理C#与JavaScript之间的通信。注意事项提示了依赖库安装问题的解决方法。该方案实现了功能完整的代码编辑器,支持代码自动保存和实时显示功能。

遇见--专栏 346

C++类中成员变量的初始化

C++类中成员变量的初始化有两种方式:          构造函数初始化列表和构造函数体内赋值。下面看看两种方式有何不同。          成员变量初始化的顺序是按照在那种定义的顺序。 1 内部数据类型(char,int……指针等) class Animal{public: Animal(int weight,int height): //A初始化列

jinvmen的博客 1255

uniapp - 使用 <video> 播放视频黑屏,浏览器控制台报错: DOMException: The element has on supported sources.(详细完美解决方案)

uniapp video 视频播放黑屏,uniapp 报错DOMException: The element has on supported sources.,uniapp如何解决DOMException: The element has on supported sources.,uniapp使用video标签无法播放视频出现黑屏问题处理,uniapp解决video视频黑屏显示0秒,并且浏览器报错DOMException: The element has on supported sources.,un

✅ 精选推荐文章 7055

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

类内非相关成员函数,const成员变量初始化,类内初始化

//一:类相关非成员函数 /*(1)定义:也就是和类有关系的函数,但是这个函数不是成员函数。 比如,下面这个函数用来打印一下形参对象的每个成员。*/ class A { public: int a; int b; public: A() :a(1), b(2) { } }; //类相关非成员函数 void func(A &obj) { std::cout << obj.a << obj.b << std::endl; } //(2)使用方式,一

qq_38158479的博客 219

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

类的成员变量,请一定初始化

类的成员变量一定要初始化,不然有一天你会死得很惨,还不知道怎么死的

Sam.yu的专栏 997

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

为什么static成员变量一定要在类外初始化?

&lt;转&gt; 1、为什么静态成员不能在类内初始化? 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样。 class A { private: static int count ; // 类内声明 }; // 类外定义并初始化,不必再加static关键字 int A::count = 0 ; 或者只进行定义不赋初始值,但是默认...

sevenjoin的博客 3万+

类的成员变量的初始化顺序

类的成员变量的初始化顺序只与变量在类中的声明顺序有关,与在构造函数中的初始化列表顺序无关。 注意:是与声明顺序有关。 #include&lt;iostream&gt; using namespace std; class A { public: //我们原意是先初始化b,再用b初始化a。 //但结果可以看出,类的成员变量的初始化顺序与声明顺序有关,先初始化的a,再初始化...

傻月菇凉的博客 3008

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

1.c++变量的初始化方式 首先把需要初始化的成员变量分为几类: a.一般变量(int) b.静态成员变量(static int) c.常量(const int) d.静态常量(static const int) 对应的初始化方式是: a.一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化 b.静态成员变量必须在类外初始化 c.常量必须在初始化列表里初始...

sinat_39370511的博客 7526

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

有些成员变量的数据类型比较特别,它们的初始化方式和普通数据类型的成员变量有所不同。这些特殊类型的数据类型包括: 引用(&) 常量(const) 静态(static) 静态常量(static const) 整数类型(integral types:int、char、bool) 非整数类型 常量(const)和引用(&)必须通过过参数列表进行初始化; 静态成员变量的初始化有些特别,是在类外初始化且不能在带有 static 关键字; 带有类内初始值设定项的成员必须为常量(且为 int

一只攻城狮的博客 3299

类的数组成员变量的初始化

类的数组成员变量的初始化     使用STL标准模板库之后,编程时已经很少使用数组和指针,相反,多使用序列容器vector代替之。 但事实并不这么理想,在迫不得已的情况下,我们还是会选择使用数组。 这里介绍一下当数组作为类的成员变量时,应该怎么对它(数组)进行初始化。 在类的构造函数中可以使用成员初始化表初始化各个成员变量,这种方法是很受推荐和赞扬的

longlovefilm的博客 1万+

Java中类,对象,成员变量的初始化机制超详细介绍

一,成员变量(实例变量和类变量)初始化方式(5种) 1、成员变量有默认值---具体略 2、显式赋值 public class Student{ public static final String COUNTRY = "中华人民共和国"; private static String school = "尚硅谷"; private String name; private char gender = '男'; } //显式赋值,一般都是赋常量值 3、代码块 如果成员变量想要初始化的值

zpf1813763637的博客 3998

C++ 类中private成员变量初始化报错问题

C++ 类中private成员变量初始化报错问题

weixin_44958462的博客 1533

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

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

chenkaiss的专栏 485

C++类中成员变量的初始化总结

1、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。   class CA { public: int data; …… public: CA(); ……   };   CA::CA():data(0)//……#1……初始化列表方式 { //data = 0;//……#1……赋值方式 };   2、

u014108137的专栏 545
上一篇: C++ 对象和实例的区别,以及用new和不用new创建类对象区别
下一篇: 广义表的链式定义和基础操作
tham_
博客等级 码龄12年 233粉丝 105原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值