TBACAMILLE 2018-08-04 09:32 采纳率: 50%
浏览 2740
已采纳

关于C++中结构体的构造函数中带冒号的问题

 struct Matrix {
   int a, b;
     Matrix(int a = 0,int b=0) : a(a),b(b) { }
} m[26];

构造函数中是对里面的成员变量设置默认值,那为什么在上述代码中已经初始化之后还要再加冒号呢?
另外有冒号的这一行是什么意思。新手小白一个,请大神指教,非常感谢

  • 写回答

5条回答 默认 最新

  • threenewbee 2018-08-05 15:23
    关注

    Matrix(int a = 0,int b=0)
    这个可不是“对里面的成员变量设置默认值”
    而是缺省参数
    也就是当你用
    Matrix m()的时候,相当于Matrix m(0,0)
    而Matrix m(123)的时候相当于 Matrix m(123,0)
    缺少的参数由你的缺省值补进去

    至于这个a b参数,并没有传给作为成员变量的a b!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算