C++构造函数要点

1、作用:构造函数主要用来完成成员的初始化工作

2、写法:与类同名的函数,一般为公有,在单例的情况下可以定义为私有,构造函数可以带参数,也可以重载,但是没有返回类型,可以不手动提供构造函数。

3、继承:

(1)基类没有定义构造函数的情况:

派生类也可以不定义构造函数,全部采用默认的构造函数。

如果只有派生类定义构造函数,只需要构造派生类对象即可,对象的基类部分使用默认构造函数来自动创建。

(2)基类中存在构造函数:

基类中存在不带参数的构造函数。如果基类定义了构造函数,而且该构造函数没有参数,那么它可以隐式的被继承,也就是说,派生类根本不需要构造函数。

基类中存在带参数的构造函数。如果基类定义了带有参数的构造函数,则此构造函数必须被继承且在派生类中实现构造函数。同时提供一个将参数传递给基类构造函数的途径,以便在基类进行初始化时能获得必需的数据,在实现构造函数时使用base关键字。创建派生类的对象后,程序首先运行的是基类的构造函中的内容,然后才是派生类的内容。

4、拷贝构造函数:

拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。拷贝构造函数是类本身就存在的一个构造函数。

浅拷贝深拷贝:默认的拷贝构造函数已经能够处理大部分问题,其原理就是对应的变量进行赋值,但是这就会存在一个问题,当变量中存在指针或者动态成员时,拷贝指针可能不是我们想要的结果,这就是浅拷贝。在“深拷贝”的情况下,对于对象中动态成员,就不能仅仅简单地赋值了,而应该重新动态分配空间。

时间: 2024-10-27 04:16:51

C++构造函数要点的相关文章

【C#】第3章学习要点(二)自定义类和结构

分类:C#.VS2015 创建日期:2016-06-19 使用教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.要点概述 别人提供的类都是为了简化你的工作量用的,可是实际处理的事情千差万别,要通过写代码做实际的事,你还得自己定义类.因此,先把如何自定义类及其涉及的相关概念和要点掌握住,是写程序绕不过去的第一关. 二.类和成员的基本概念 1.基本格式 [访问修饰符] [static] class 类名 [: 基类 [,接口序列]] { [类成员] } 要点: (1)基类最多

System.gc()与Object.finalize()的区别

finalize()是由JVM自动调用的,你可以用System.gc(),但JVM不一定会立刻执行,JVM感觉内存空间有限时,才会开始执行finalize(),至于新的对象创建个数和被收集个数不同是因为收集的对象只和JVM的垃圾收集策略有关. 1.构造函数 要点: 构建器(Constructor)属于一种较特殊的方法类型,因为它没有返回值.这与 void返回值存在着明显的区别.对于void返回值,尽管方法本身不会自动返回什么,但仍然可以让它返回另一些东西.构建器则不同,它不仅什么也不会自 动返回

虚函数总结

因为平时不太常用 看C++PP的时候刷到这一部分内容,记录下来以后复习用 相关内容: 派生类构造函数要点: 1.首先创建基类对象 2.派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数 3.派生类构造函数应初始化派生类新增的数据成员 在派生类的初始化列表中通过基类的构造函数对派生类对象进行初始化是通过基类的复制构造函数完成的 因为复制构造函数传递的是引用类型,而基类可以引用派生类,所以编译器会自动将初始化后的新基类对象赋值给派生类对象,如果须要对派生类对象独有的变量进行初始化,可以在

System.gc

Java中的内存分配是随着new一个新的对象来实现的,这个很简单,而且也还是有一些可以“改进”内存回收的机制的,其中最显眼的就是这个System.gc()函数. 乍一看这个函数似乎是可以进行垃圾回收的,可事实并不是那么简单.其实这个gc()函数的作用只是提醒虚拟机:程序员希望进行一次垃圾回收.但是它不能保证垃圾回收一定会进行,而且具体什么时候进行是取决于具体的虚拟机的,不同的虚拟机有不同的对策. java提供了从语言角度能够强制jvm进行垃圾回收,在我们的程序中可以通过调用System.gc去强

面向对象要点(构造函数)

每创建一个类的实例都去初始化它的所有变量是乏味的.如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的.因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor).  一个构造函数是对象被创建时初始对象的成员函数.它具有和它所在的类完全一样的名字.一旦定义好一个构造函数,与new运算符一起使用,创建对象时就会自动调用它.构造函数没有返回类型,即使是void类型也没有.这是因为一个类的构造函数的返回值的类型就是这个类本身.构造函数的任务是初始化一个对象的内部状

【好程序员训练营】---- 重载、构造函数和this、static要点

android培训------我的java笔记,期待与您交流! 一.重载函数 类中多个同名的方法名 靠参数来区分 class Person{ int age; String name; void set(int a){ age = a; } void set(String s){ name = s; } } 二.构造函数 没有返回值 每个类都有构造函数,若没有写,编译器会自动添加 如果类中写有其他有参构造函数而又没有写默认构造函数,这时new无参构造函数则会出错,因为编译器不会自动添加默认构造函

构造函数、析构函数、虚析构函数、纯虚析构函数要点总结

1.派生类的构造函数.析构函数默认会调用基类的构造函数.析构函数. 顺序:基类构造.派生类构造:派生类析构,基类析构. 举例: 1 /****************************************************************************************************** 2 * File:Constructor&DestructorTest 3 * Introduction:测试构造函数.析构函数.虚构造函数与纯虚构造函数的一些

拷贝构造函数与赋值运算符重载函数要点

拷贝构造函数 一个小例子 最近在<剑指Offer>上看到了一道题(程序如下),要求我们分析编译运行的结果,并提供3个选项: A. 编译错误: B. 编译成功,运行时程序崩溃:C. 编译运行正常,输出10. 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 private: 7 int value; 8 9 public: 10 A(int n) { value = n; } 11 A(A other) {

winform 传值,构造函数等

窗体转换 制作一个登陆窗体,实现点击按钮关闭此窗体并打开另一个窗体 直接在按钮点击事件中,实例化一个想要打开的窗体 使用show方法打开,并把登陆窗体的visible属性改为false Form1 f1 = new Form1(); f1.Show(); this.Visible = false; 另:这样写的话再关闭第二个窗口的时候,程序并没有完全结束,第一个登陆窗口仍然存在,虽然不显示 因此我们用到构造函数传值,并且这样可以实现打开唯一窗口(不重复打开同一个窗口) _____________