继承-没有合适的默认构造函数可用

问题描述

没有合适的默认构造函数可用

class Employee

{ public:
Employee(const long n,const char N){};
virtual~Employee(){};

const char getName(long n) const{};
const long getNumber() const{};
virtual double eamings() const=0;

virtual void print() const{cout<<"编号:"<<number<<"姓名"<<*name<<endl;};

protected:
long number;

char *name;

};
class Manager: public Employee

{ public:
Manager(const long n,const char *N,double u=0.0)

就这个括号后面有错。。。没有合适的默认构造函数可用{number=n,*name=*N,u=0;};

~Manager(){}
void setMonthlySalary(double n){number=n;};

virtual double eamings() const{return 0;};
virtual void print() const{cout<<"编号:"<<number<<"姓名"<<*name<<"月薪"<<monthlySalary<<endl;};
private:
double monthlySalary;

};

int main()
{ cout<<setiosflags(ios::fixed|ios::showpoint)<<setprecision(2) ;
Manager m1(10135,"Cheng ShaoHua", 1200) ;
Manager m2(10201,"Yan HaiFeng");
m2.setMonthlySalary ( 5300) ;

解决方案

1200是int,而参数要求double,你应该用1200.0

解决方案二:

其实是少定义了一个重载默认构造函数

时间: 2024-09-10 07:31:46

继承-没有合适的默认构造函数可用的相关文章

c++-没有合适的默认构造函数可用

问题描述 没有合适的默认构造函数可用 头文件:#ifndef WEBKIT_VLC_H#define WEBKIT_VLC_H#include #include #include ""obj_openvlc.h""namespace Ui { class Webkit_VLC;}class Webkit_VLC : public QWebView{ Q_OBJECTpublic: explicit Webkit_VLC(QWidget *parent = 0); ~

默认构造函数-类构造函数的问题(继承)

问题描述 类构造函数的问题(继承) #include <iostream> using namespace std; class People { protected: char name[20],xb[10],id[21]; int num,all,week; public:People() { } public:People(char na[20],int nu,char x[10],char idc[21],int al,int wk) { strcpy_s(name,na); num=

一个典型的问题,关于继承成员内部类的子类的构造函数

问题描述 一个典型的问题,关于继承成员内部类的子类的构造函数 初学JAVA,没有C币,但是希望大家能够帮忙解决一下问题: 先上代码: package Test; public class test9 { public static void main(String[] args){ Outer outer=new Outer("test"); new Extender(outer,10); } } class Outer{ public Outer(String str){} clas

C++对象模型(一):The Semantics of Constructors The Default Constructor (默认构造函数什么时候会被创建出来)

本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记. C++ Annotated Reference Manual中明确告诉我们: default constructor会在需要的时候被编译器产生出来.注意,这里是编译器需要,而不是程序需要.后来的C++ Standard 95修改了这种说法,但是实质上仍是相同的: For class X, if there is none user declared constrator, one default

C++的默认构造函数

1.每个类必须有一个构造函数,否则没法创建对象: 2.若programer没有提供任何构造函数,则C++提供一个默认的构造函数,该默认构造函 数是无参构造函数,它仅负责创建对象,不做任何初始化的工作: 3.只要programer定义了一个构造函数(不管是无参还是有参构造),C++就不再提供默 认的默认构造函数.即如果为类定义了一个带参的构造函数,还想要无参构造函数,就必须 自己定义: 4.与变量定义类似,在用默认构造函数创建对象时,如果创建的是全局对象或静态对象 ,则对象的位模式全为0,否则,对

深度探索C++对象模型--------默认构造函数

一:默认构造函数的构建      默认构造函数总是在被需要的时候构建出来!!关键字"被需要的时候"!! class Foo { public: int val; Foo *next; }; void foo_bar() { Foo bar; if(bar.val || bar.next) //do something } 上述的代码,编写者意图对象bar中的data member val 和 next 为0.但是编译器没有义务为你初始化为.首先对于堆栈中的变量都不一定会被初始化为0,而

《从零开始学Swift》学习笔记(Day 37)——默认构造函数

Swift 2.0学习笔记(Day 37)--默认构造函数原创文章,欢迎转载.转载请注明:关东升的博客 结构体和类的实例在构造过程中会调用一种特殊的init方法,称为构造函数.构造函数没有返回值,可以重载.在多个构造函数重载的情况下,运行环境可以根据它的外部参数名或参数列表调用合适的构造函数.默认构造函数结构体和类在构造过程中会调用一个构造函数,即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数.下面看示例代码: class Rectangle { var width: Double

从汇编看c++中默认构造函数的使用分析_C 语言

c++中的源程序: 复制代码 代码如下: class X {private:    int i;}; int main() {    X x;} 上面的类X没有定义构造函数,仅仅有一个int i. 下面为其汇编程序: 复制代码 代码如下: ; 7    : int main() {     push    ebp;ebp为一个寄存器,总是指向一个函数调用堆栈的栈底,作为基址,用偏移量来访问该调用栈上的变量,但这里没有任何变量要访问,因此不起作用     mov    ebp, esp;这两句的作

C++默认构造函数的合成

默认构造函数的误解 1.当程序猿定义了默认构造函数,编译器就会直接使用此默认构造函数 来一个简单的栗子 class Student;class School{public:    School(){}    ...    Student students;}; 我们知道,一个对象,在定义的时候就一定会调用其构造函数.而在我们上面的默认构造函数,明显没有调用students的构造函数,所以,编译器绝对没有直接使用我们的默认构造函数.具体细节,请看下文,这里只提问题. 2.当程序猿没有定义构造函数的