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");
  • 相关阅读:
    点 多边形内外判断
    Winform获取js变量值
    软件和系统之间的微妙
    c# 读写json文件
    不规则图形重心
    c# winform 打开html界面(含引用外部文件js)
    c# GDI 画圆,可以调整大小等功能
    mysql 查找乱码数据
    类实例的拷贝
    Java 并发专题 :FutureTask 实现预加载数据 在线看电子书、浏览器浏览网页等
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994801.html
Copyright © 2011-2022 走看看