zoukankan      html  css  js  c++  java
  • 看不懂的

    cppnewbie

    头文件中声明构造函数的问题

    [table=95%][tr][td][font=FixedSys][color=#0000cc]# include <string>
    # include <iostream>

    class Employee {
        public:
            Employee(std::string);
            void display();

        private:
            std::string _name;
    };

    Employee::Employee(std::string name="no name"):_name(name) {}

    inline void Employee::display()
    { std::cout<<"The name is "<<_name<<'.'<<std::endl; }


    int main() {
        Employee e; // 这里使用默认构造函数构造对象

        e.display();

        return 0;
    }

    /* 上面的代码在一个转换单元(一个程序源文件)中时可以编译通过,
    * 并正常运行。
    *
    * 当分为 头文件、类定义文件、主函数文件 三个转换单元的时候,
    * 会提示 找不到匹配的构造函数。
    * 我想是因为 头文件的构造函数声明未指出参数默认值造成的。
    *
    * 这个问题应如何解决?
    * */

    [/color][/font][/td][/tr][/table]
    2007-12-21 17:20westgarden
    Employee(const std::string& = std::string("no name"));


    Employee::Employee(const std::string& name):_name(name) {}
    2007-12-21 18:59cppnewbie
    多谢,不过我不太记得在什么地方看过, 类声明的头文件中尽量不要定义实体,也就是说尽量不包含分配内存的量. 参数默认值放在头文件中是不是违背了这个原则?
    2007-12-21 19:29antigloss
    默认参数须放在头文件的函数
    CLineRuler m_lineRuler(const CString = "aaa");
  • 相关阅读:
    【3006】统计数字
    【5001】n皇后问题
    【7001】n阶法雷序列
    【9402】倒序数
    【9705】&&【a801】细胞
    【9802】闭合曲线面积
    【a803】营救
    【9112】求2的n次方的精确值
    V8引擎实现标准ECMA-262(三)
    仔细看看Javascript中的逻辑与(&&)和逻辑或(||)
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994801.html
Copyright © 2011-2022 走看看