zoukankan      html  css  js  c++  java
  • 必须在构造函数基/成员初始值设定项列表中初始化

    C++ primer 上面的一个例子:
    
     
    
    // constRef.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    
    class constRef
    {
    public:
     constRef(int ii);
    
     int i;
     const int ci;
     int &ri;
    };
    
    constRef::constRef(int ii)
    {
     i=ii;
     ci=ii;
     ri=i;
    }
    
    //constRef::constRef(int ii):i(ii),ci(i),ri(ii){}
    
    int _tmain(int argc, _TCHAR* argv[])
    {
     constRef B(5);
    
     printf("%d,%d,%d",B.i,B.ci,B.ri);
     return 0;
    }
    
     这样写是有错误的,error C2758: “constRef::ci”: 必须在构造函数基/成员初始值设定项列表中初始化;
    constRef::ri”: 必须在构造函数基/成员初始值设定项列表中初始化;
    error C2166: 左值指定 const 对象;
    
     
    
    而将
    
    constRef::constRef(int ii)
    {
     i=ii;
     ci=ii;
     ri=i;
    }
    
    使用constRef::constRef(int ii):i(ii),ci(i),ri(ii){} 替换 就正确了,你知道原因吗?
    
     
    
    记住:可以初始化const对象或引用类型的对象,但不能对他们赋值。在开始执行构造函数的函数体之前,必须完成初始化。初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中。
    
  • 相关阅读:
    tf-idf sklearn
    特征工程——特征预处理
    dict 字典
    特征预处理——特征表达
    特征工程之特征选择
    机器学习技巧学习
    dataframe去重 drop_duplicates
    dataframe 转为list
    XGboost
    StratifiedShuffleSplit()函数 实现对数据集的划分
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/3570493.html
Copyright © 2011-2022 走看看