c++11 继承构造

c++11 继承构造

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <string>
#include <vector>
#include <map>

// C++ 11允许派生类继承基类的构造函数(默认构造函数、复制构造函数、移动构造函数除外)。
/*
注意:
继承的构造函数只能初始化基类中的成员变量,不能初始化派生类的成员变量
如果基类的构造函数被声明为私有,或者派生类是从基类中虚继承,那么不能继承构造函数
一旦使用继承构造函数,编译器不会再为派生类生成默认构造函数
*/
class A
{
public:
    A(int i) { std::cout << "i = " << i << std::endl; }
    A(double d, int i) {}
    A(float f, int i, const char* c) {}
    // ...
};

class B : public A
{
public:
    using A::A; // 继承构造函数
    // ...
    virtual void ExtraInterface(){}
};

void mytest()
{

    return;
}

int main()
{
    mytest();

    system("pause");
    return 0;
}
时间: 2024-10-08 18:41:25

c++11 继承构造的相关文章

c++11 委托构造

c++11 委托构造 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <vector> #include <map> // 委托构造和继承构造函数类似,委托构造函数也是C++11中对C++的构造函数的一项改进,其目的也是为了减少程序员书写构造函数的时间. // 如果一个类包含多个构造函数,C++ 11允许在一个构造函数中的定义中使用另一个构造函数,但

c++11 继承构造函数

若基类拥有数量众多的不同版本的构造函数,而派生类中只有一些成员函数,则对于派生类而言,其构造函数就等同于构造基类. struct A { A(int i) {} A(double d, int i) {} A(float f, int i, const char* c) {} //... }; struct B : A { B(int i): A(i) {} B(double d, int i): A(d, i) {} B(float f, int i, const char* c): A(f,

2016.11.11继承与接口

class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("GrandParent Created.String:" + string); } } class Parent extends Grandparent { public Pare

c++继承构造析构调用原则以及特殊变量处理

一.继承中的构造析构调用原则 1.子类对象在创建时会首先调用父类的构造函数 2.父类构造函数执行结束后,执行子类构造函数 3.当父类构造函数有参数时,需要在子类的初始化列表中显示调用: 4.析构函数调用的先后顺序与构造函数相反 二.继承与组合混搭时,构造与析构的调用原则 1.先析构父类,再构造成员变量,最后构造自己 2.先析构自己,在析构成员变量,最后析构父类(先析构的对象,后释放) 三.继承中同名成员变量处理方法 1.当子类成员变量与父类的成员变量同名时,子类依然从父类继承同名成员,且同名成员

Obj-c3[继承,构造便利器]

main.m #import <Foundation/Foundation.h> #import "Person.h" #import "Student.h" #import "COllegeStudent.h" int main(int argc, const char * argv[]) {    @autoreleasepool {//继承        //        Person * person = [[Person

scala 第12讲 继承 构造

DT大数据梦工厂scala的所有视频.PPT和代码在百度云盘的链接:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group <Scala深入浅出实战初级入门经典视频课程>http://edu.51cto.com/lesson/id-66538.html <Scala深入浅出实战中级进阶经典视频课程>http://edu.51cto.com/lesson/id-6713

c++ STL(七 c++11新特性速览)

1.nullptr nullptr 出现的目的是为了替代 NULL. 在某种意义上来说,传统 C++ 会把 NULL.0 视为同一种东西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为 ((void*)0),有些则会直接将其定义为 0. C++ 不允许直接将 void * 隐式转换到其他类型,但如果 NULL 被定义为 ((void*)0),那么当编译char *ch = NULL;时,NULL 只好被定义为 0. 而这依然会产生问题,将导致了 C++ 中重载特性会发生混乱,

继承 多态 构造 易错点

说明 继承的二个关键点: 子类继承了其父类中所有非私有的成员变量和成员方法,并作为自己的成员变量和方法 子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量会被[隐藏] 子父类成员同名情况 对于成员变量:父类的成员变量在子类中是存在的,即使是私有的或者和子类中定义的成员变量同名:但是子类中能看到的只有子类中定义的变量和从父类继承的非私有的变量,并且如果子类中定义的变量和从父类中继承过来的变量重名,则会隐藏从父类继承的成员变量. 对于成员方法:同名的非静态方法则是我们常说的实实在在

Swift----方法 、 下标 、 继承 、 初始化 、 析构方法 、 可选链

1 下标的使用 1.1 问题 下标可以定义在类.结构体和枚举中,可以认为是访问对象.集合或序列的快捷方式,不需要再调用实例的特定的赋值和访问方法. 本案例定义一个Matrix结构体,用于呈现一个Double类型的二维矩阵,其结构体内部使用一个一维数组保存数据,并且定义一个下标用于判断是否会造成数组越界. 1.2 方案 首先定义一个Matrix结构体,该结构体有一个存储属性grid,是一个Double类型的结构体,用于存储矩阵的数据. Matrix结构体另有两个整型的常量存储属性rows和colu