C++:默认生成的成员函数

C++默认生成4个成员函数.

默认构造函数(default constructor), 析构函数(destructor), 复制构造函数(copy constructor), 赋值函数(assignment);

其中析构函数, 会自动析构C++的基本类型数据.

"=default"表示添加默认, 可以用于重载; "=delete"表示删除, 即不使用默认;

以下代码主要展示, 复制构造函数 和赋值函数的生成情况.

代码:

/*
 * test.cpp
 *
 *  Created on: 2014.04.14
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <iostream>
#include <string>  

using namespace std;  

class Foo {
public:
    Foo(std::string _name) : m_name(_name) {};
    void say() { std::cout << m_name << std::endl;}
    Foo(const Foo&) = default; //delete表示删除, default表示使用默认
    Foo& operator=(const Foo&) = default;
    ~Foo() = default;
private:
    std::string m_name;
};  

int main() {
    Foo F1("Wang");
    Foo F2(F1);
    Foo F3 = F2;
    F2.say();
    F3.say();
    return 0;
}

输出:

Wang
Wang

作者:csdn博客 Spike_King

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, 函数
, constructor
, default
, 生成
, 成员
默认析构函数
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-11-01 16:04:19

C++:默认生成的成员函数的相关文章

【C/C++学院】0819-/类的成员函数与const-mutable /构造与析构/拷贝构造deletedefault以及深浅拷贝/静态成员函数成员变量类在内存的存储默认参数/友元类以及友元函数

类的成员函数与const-mutable  成员函数 Fushu.h #pragma once #include <iostream> class fushu { public: int x; int y; public: fushu(); ~fushu(); void show(); inline void showall(int x, int y);//显式内联 void setxy(int x, int y);//编译器优化,默认隐式内联 void show(int x, int y);

拷贝构造,深度拷贝,关于delete和default相关的操作,explicit,类赋初值,构造函数和析构函数,成员函数和内联函数,关于内存存储,默认参数,静态函数和普通函数,const函数,友元

 1.拷贝构造 //拷贝构造的规则,有两种方式实现初始化. //1.一个是通过在后面:a(x),b(y)的方式实现初始化. //2.第二种初始化的方式是直接在构造方法里面实现初始化. 案例如下: #include<iostream> //如果声明已经定义,边不会生成 class classA { private: int a; int b; public: //拷贝构造的规则,有两种方式实现初始化 //1.一个是通过在后面:a(x),b(y)的方式实现初始化 //2.第二种初始化的方式是直

C++:模板类使用成员函数模板处理隐式(implicit)转换

指针支持隐式转换(implicit conversion), 在动态绑定中,派生类指针可以转换为基类指针. 但是模板的实例化(instantiations)之间, 是单独存在的, 派生类的实例化的模板(SmartPtr<Derived>), 不能转换为基类实例化的模板(SmartPtr<Base>); 需要明确的编写, 因为派生类也可以继续做为基类, 产生派生类, 所以无法直接写出构造函数. 使用成员函数模板(member function template), 再声明一个模板参数

成员函数指针与高性能的C++委托 (Member Function Pointers and the Fastest Possible C++ Delegates)

标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托(delegate)")在一些语言中已经证明了它宝贵的价值.在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础.而在目前,C#使"委托"的概念日趋流行,这也正显示出C#这种语言的成功.在很多应用程序中,&qu

C++中成员函数(member function)模板(template) 详解

成员模板(member template) 既可以在普通类(ordinary class), 也可以在类模板(class template); 在普通类中, 在使用成员函数时, 不用提供模板参数, 函数可以根据使用的参数, 自动推导(deduce)模板实参(template argument)对应模板形参(template parameter); 在类模板中, 成员函数的模板参数(template parameter)可以和类的模板参数不同, 但在定义(definition)中, 必须添加两个模

(一二八)比较成员函数、中括号表示法、静态成员函数

有比较函数是strcmp (参数1, 参数2)   参数是两个字符串,所在头文件是<string>   比较方法是按顺序依次比较参数1和参数2的第一个字符(看ASCII值). 假如相同,则比较下一个: 假如参数1的比参数2的大,则返回1(正数): 假如参数1的比参数2的小,则返回-1(负数): 假如两个字符串完全一样,则返回0.   其原理是(这个我自己写的): int strcmp(const char* a, const char* b) { while (*a == *b) { if (

函数式接口、默认方法、纯函数、函数的副作用、高阶函数、可变的和不可变的、函数式编程和 Lambda 表达式 - 响应式编程 [Android RxJava2](这到底是什么)第三部分

本文讲的是函数式接口.默认方法.纯函数.函数的副作用.高阶函数.可变的和不可变的.函数式编程和 Lambda 表达式 - 响应式编程 [Android RxJava2](这到底是什么)第三部分, 太棒了,我们又来到新的一天.这一次,我们要学一些新的东西让今天变得有意思起来. 大家好,希望你们都过得不错.这是我们的 RxJava2 Android 系列的第三篇文章. 第一部分 第二部分 在这篇文章中,我们将讨论函数式的接口,函数式编程,Lambda 表达式以及与 Java 8 的相关的其它内容.这

c++-哪位大神帮忙解释一下类成员函数后面加const什么意思

问题描述 哪位大神帮忙解释一下类成员函数后面加const什么意思 哪位大神帮忙解释一下类成员函数后面加const什么意思 尽量清晰点 谢谢大神 感觉c++好难的 附加问一句c语言数据结构c++应该怎么顺序来看这些书 解决方案 原回答中第二段代码的注释有误,应该是"常量成员函数"(提交后竟然不能再编辑修改了...). C++语言和数据结构可以同步学,数据结构中用到的语言特性并不多. 解决方案二: 函数加CONST 就是证明 这里面用到的数据成员 也都会按常量来处理,一些修改操作是不可行的

【PHP】PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数)

[PHP]PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数) 前言 由于业务需要,我们需要从业务中汇总数据,并生成Excel文件. 思路是这样的 PHP要导出Excel表格文件->找一个好用的第三方库吧->在Composer的Packages里找一个吧->PHPExcel这么多收藏,就它了! PHPExcel 概述 PHPExcel is a library written in pure PHP and providing a set of classes th