1. 类成员为const类型

2. 类成员为引用类型

#include <iostream>
using namespace std;class A
{public:A(int &v) : i(v), p(v), j(v) {}void print_val() { cout << "hello:" << i << "  " << j << endl;}private:const int i;int p;int &j;
};int main(int argc ,char **argv)
{int pp = 45;A b(pp);b.print_val();
}

究其因

const对象或引用只能初始化但是不能赋值。构造函数的函数体内只能做赋值而不是初始化,因此初始化const对象或引用的唯一机会是构造函数函数体之前的初始化列表中。

从无到有叫初始化,初始化(调用拷贝构造函数)创建了新对象;赋值(调用赋值操作符)没有创建新对象,而是对已有的对象赋值。

3. 类成员为没有默认构造函数的类类型

#include <iostream>
using namespace std;class Base
{public:Base(int a) : val(a) {}private:int val;
};class A
{public:A(int v) : p(v), b(v) {}void print_val() { cout << "hello:" << p << endl;}private:int p;Base b;
};int main(int argc ,char **argv)
{int pp = 45;A b(pp);b.print_val();
}

原因同样是创建对象时,要初始类成员的每一个成员

4. 如果类存在继承关系,派生类必须在其初始化列表中调用基类的构造函数

#include <iostream>
using namespace std;class Base
{public:Base(int a) : val(a) {}private:int val;
};class A : public Base
{public:A(int v) : p(v), Base(v) {}void print_val() { cout << "hello:" << p << endl;}private:int p;
};int main(int argc ,char **argv)
{int pp = 45;A b(pp);b.print_val();
}

类的初始化(构造函数)相关推荐

  1. 类的初始化列表_【Flutter 111】Flutter手把手教程Dart语言——类、类的的成员变量和方法、类的构造函数...

    类 Dart是一种面向对象的语言,所有对象都是一个类的实例,而所有的类都继承自Object类.每个除了Object类之外的类都只有一个超类,一个类的代码可以在其它多个类继承中重复使用. 类的实例变量 ...

  2. c++利用初始化列表在类内部和类外部定义构造函数的区别

    case 1:在类外定义构造函数,所有data member都在初始化列表中进行初始化. class SupportClass { public:SupportClass(){cout << ...

  3. java初始化实例化_Java对象的创建过程:类的初始化与实例化

    一.Java对象创建时机 我们知道,一个对象在可以被使用之前必须要被正确地实例化.在Java代码中,有很多行为可以引起对象的创建,最为直观的一种就是使用new关键字来调用一个类的构造函数显式地创建对象 ...

  4. C++编译器会对没有构造函数的类生成默认构造函数吗?

    之前在上C++的课的时候,印象中有那么一句话: 如果一个类没有任何构造函数,那么编译器会生成一个默认的构造函数 今天在看<深度探索C++对象模型>的第二章:"构造函数语意学&qu ...

  5. java web 初始化方法_Java Web(二) 类的初始化及初始化顺序

    1. 问题点 最近在写单例模式的时候碰到了@Autiwired注解注入为NULL的情况,研究一番,发现是和类的初始化顺序有关.先抛出我的问题: //异步处理 public class AsyncMan ...

  6. move std 函数 示例_确保(值类型)可拷贝类有默认构造函数

    C.43: Ensure that a copyable (value type) class has a default constructor C.43:确保(值类型)可拷贝类有默认构造函数 Re ...

  7. 构造方法、类的初始化块以及类字段的初始化顺序

    构造方法 首先,以下代码为何无法通过编译?哪儿出错了? public class Test {public static void main(String[] args) {Foo obj1 = ne ...

  8. 【转】C#Static类和Static构造函数

    Static类是不能实例化的, C#2.0以前为了不让一个类在外部实例化,通常都是创建一个private的构造函数,现在可以通过Static类来达到这样的目的. Static类通常用于那些只包括sta ...

  9. dart系列之:dart类中的构造函数

    文章目录 简介 传统的构造函数 命名构造函数 构造函数的执行顺序 重定向构造函数 Constant构造函数 工厂构造函数 总结 简介 dart作为一种面向对象的语言,class是必不可少的.dart中 ...

  10. scala 主构造函数_在Scala中,如何在类的主构造函数中定义局部参数?

    在Scala中,如何在不是数据成员的类的主构造函数中定义局部参数,例如,仅用于初始化基类中的数据成员? 例如,在下面的代码中,如何在B类的主构造函数中正确定义参数b,以便它只生成临时本地参数而不是数据 ...

最新文章

  1. css3的3d起步——分享
  2. c++如何获取文件时间_如何在Windows 10上获取文件或文件夹的所有权
  3. 第一部分 Calendar介绍
  4. 域渗透——Local Administrator Password Solution
  5. VB高级编程之:完全子类化模仿OFFICE2007按钮
  6. [RK3288][Android6.0] StageFright解码流程小结
  7. 利用计算机模拟专家给病人,《计算机应用基础2007》复习资料
  8. Requests--get( )方法
  9. 四位共阳极数码管显示函数_74hc573可以驱动几位共阴数码管?74hc573驱动数码管应用解析...
  10. 程序员应该学习的一些数学知识
  11. T83310 【音乐会】二重变革
  12. win下安装mmcv的一些报错
  13. 分享 | 基于图像分类网络ResNet50_vd实现桃子分类
  14. 爬虫——Scrapy框架案例一:手机APP抓包
  15. 微信公众平台开发最佳实践(第2版)
  16. 熊猫分发_熊猫实用指南
  17. 服务器系统防火墙设置在哪里设置方法,服务器怎么设置防火墙设置在哪里
  18. 视频号容易被限流的8个雷区,这些规则你一定要知道!
  19. 证监计算机类专业知识,2020国考中国证监会计算机类专业考什么?
  20. 连接mysql数据库报错Cannot create PoolableConnectionFactory

热门文章

  1. 10.30T2 二分+前缀和(后缀和)
  2. 日志为什么不入数据库
  3. python安装requests
  4. centos7 安装图形界面、VNCserver
  5. 20160626001 O2O Website
  6. Android生成缩略图-使用Android 2.2新特性完成
  7. Android Activity动画属性简介
  8. 别跟我说测试的坏话...
  9. 最长上升子序列问题 (LIS)
  10. Java中vector的用法