c++ 析构函数和构造函数

如果存在继承,父类的析构函数最好是虚析构函数,当Base * base = new Drive(), delete base的时候能正确析构子类

不存在虚构造函数(虚函数需要借助虚函数表,构造函数执行之前,并没有对象也就没有虚函数表)

析构函数可以是内联函数

单个参数的构造函数如果不添加explicit关键字,会定义一个隐含的类型转
换(从参数的类型转换到自己);添加explicit关键字会消除这种隐含转换

隐含的函数:默认构造函数、默认析构函数、拷贝构造函数、赋值函数

时间: 2024-10-15 06:33:30

c++ 析构函数和构造函数的相关文章

关于析构函数和构造函数何时调用的小例子

详情见C++ PrimerPlus第十章 省略其他函数,将构造函数和析构函数写出来 Stock::Stock() //default constructor{ std::cout<<"Default constructor called\n"; company="no name"; shares=0; share_val=0; total_val=0;} Stock::Stock(const std::string&co,long n,doubl

php 析构函数,构造函数

php 析构函数,构造函数 <?php /** * 测试使用的PHP操作类 * Date: 2017/7/13 * Time: 14:22 */class Test{ /** 姓名 */ public $name; /** 生日 */ public $birth; /** * 构造函数方法 __construct 它是一个魔术方法 * 它是在创建对象时被自动调用 * 一个类中有且只能有一个构造函数 * 构造函数可以带参数,这些参数通常是用来给类的属性进行初始化赋值 */ public funct

【C/C++学院】(6)构造函数/析构函数/拷贝构造函数/深copy浅copy

1.构造函数 类的初始化即为构造函数.也为:隐式的初始化. 构造函数在对象初始化的时候,自动被调用.隐式的调用. 构造函数分为三种:有参构造函数.无参构造函数.拷贝构造函数. 有参构造函数调用有三种:括号法.等号法.手工法. #include <iostream> using namespace std; class Test { private: int m_a; public: Test()//无参构造函数 { } Test(const Test &obj)//拷贝构造函数 { }

C++异常与析构函数及构造函数

析构函数不要抛出异常. 构造函数可以抛出异常,但是要谨慎. 原因下面这篇文章讲的不错,转载如下: http://jarfield.iteye.com/blog/811703 写Java代码的时候,遇到错误总是喜欢抛出异常,简单实用.最近开始写C++代码,发现异常没那么简单,使用须谨慎. 翻阅了<Effective C++> <More Effective C++><Inside The C++ Object Model>的相关章节,大概弄明白了一些东东,总结在本文. 本

c++类大四个默认函数-构造函数 析构函数 拷贝构造函数 赋值构造函数

每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数).对于任意一个类A,如果不编写上述函数,C++编译器将自动为A 产生四个缺省的函数,例如: A(void);//缺省的无参数构造函数 A(const A&a);//缺省的拷贝构造函数 -A();//缺省的析构函数 A&operator=(const A &a);//缺省的赋值构造函数 1).“缺省的拷贝构造函数”和“缺省的赋值函数”均采用“位拷贝”而非“值拷贝”的方式来实现,倘

析构函数和构造函数

1.构造函数和析构函数为什么没有返回值? 总是由编译器来调用这些函数以确保它们被执行.如果它们有返回值,要么编译器必须知道如何处理返回值,要么就只能由客户程序员自己来显式的调用构造函数与析构函数,这样一来,安全性就被人破坏了.另外,析构函数不带任何参数,因为析构不需任何选项. 构造函数返回的应当是所构造的对象.否则,我们将无法使用临时对象初始化对象. class C { public: C(): x(0) {} C(int i): x(i) {} private: int x; }; 正常情况下

C++ struct结构体定义构造函数和析构函数,构造函数参数从VS2017平台转换到Qt5平台下构建出错,采用字符集转换函数将string类型转换为wstring,构建仍然出错!

调试win硬件驱动,需要利用VS编译的win驱动构建自己的Qt5GUI程序: 其中部分win驱动源码如下 device_file::device_file(const std::string& path, DWORD accessFlags) { h = CreateFile(path.c_str(), accessFlags, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);} 调用winAPI CreateFile函数在win中字符编

虚析构函数(√)、纯虚析构函数(√)、虚构造函数(X)

from:http://blog.csdn.net/fisher_jiang/article/details/2477577 一. 虚析构函数 我们知道,为了能够正确的调用对象的析构函数,一般要求具有层次结构的顶级类定义其析构函数为虚函数.因为在delete一个抽象类指针时候,必须要通过虚函数找到真正的析构函数. 如: class Base{public:   Base(){}   virtual ~Base(){}};class Derived: public Base{public:   D

PHP面向对象(二)--构造函数与析构函数

一.构造方法: 构造方法又称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作. 1.构造方法和其他函数一样,可以传递参数,可以设定参数默认值. 2.构造方法可以调用属性,也可以调用方法. 3.构造方法可以被其他方法显式调用. 构造方法的声明:使用__construct()函数表示构造方法. <?php header("Content-Type: text/html; charset=UTF-8"); class Person{ public $name ; //定