c++ 编程基础
weixin_41040683
这个作者很懒,什么都没留下…
展开
-
共享指针shared_ptr
#include <memory>#include <iostream>class A{ public: ~A() { std::cout << "destroy A" << std::endl; } int a;};int main() { ...原创 2020-05-08 12:03:14 · 150 阅读 · 0 评论 -
共享指针(shared_ptr)对于类的拷贝/赋值带来的好处
1.不使用共享指针的情况#include <iostream>#include <memory>#include <string.h>class A{ public: A() { std::cout << "create A." << std::endl; } ...原创 2020-04-09 12:24:43 · 3506 阅读 · 0 评论 -
C++使用模板、函数指针、接口和lambda表达式这四种方法做回调函数的区别比较
在C++中,两个类之间存在一种关系,某个类需要另外一个类去完成某一个功能,完成了之后需要告知该类结果,这种最普通最常见的需求,往往使用回调函数来解决。如题,我总结下来有这么四种方式可以完成这项功能,下面来一一分析:1、使用模板// CppTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdlib.h>#i...转载 2020-01-05 21:33:51 · 222 阅读 · 0 评论 -
C++ 类的初始化及释放
1. 类的初始化、销毁顺序1.1 如果使用的是类对象在初始化时,默认调用构造函数;在超出作用域时,默认调用析构函数;示例1#include <iostream>using namespace std;class Base { public: Base(){cout<< "base " << endl;} ~Base(){cout ...原创 2019-07-07 00:31:39 · 494 阅读 · 0 评论 -
C++ 单继承时类的初始化和销毁
1. 父类和子类的初始化、销毁顺序1.1 使用子类对象初始化时,先初始化父类,再初始化子类;销毁时,先销毁子类,再销毁父类;示例#include <iostream>using namespace std;class Base { public: Base(){cout<< "base " << endl;} //virtual ...原创 2019-07-07 00:30:33 · 580 阅读 · 0 评论 -
C++ 单继承时成员变量的初始化和析构
1. 类的初始化、销毁顺序1.1 初始化、析构顺序如下初始化:父类的成员变量父类的构造函数子类的成员变量子类的构造函数析构:子类的构造函数子类的成员变量父类的构造函数父类的成员变量示例1#include <iostream>using namespace std;class A { public: A(){cout<< "A "...原创 2019-07-07 00:29:13 · 485 阅读 · 0 评论 -
前向声明
前向声明1.类成员函数是指针A.h#ifndef _A_H_#define _A_H_class A{public: A(); ~A(); void test();};#endifA.cpp#include "A.h"#include <iostream>using namespace std;A::A() { cout << ...原创 2019-07-07 00:26:12 · 150 阅读 · 0 评论 -
[c++11]我理解的右值引用、移动语义和完美转发
原文链接:http://www.jianshu.com/p/d19fc8447eaa ...转载 2019-07-15 16:51:56 · 90 阅读 · 0 评论 -
编写MyString
MyString构造函数要区分输入参数是否为空;构造函数生成的对象原来并不存在,所以不需要delete[] m_data;对于拷贝赋值函数,操作步骤分为三步:防止自赋值;delete 当前内存,然后向当前对象赋值;返回当前对象引用;(目的是为了方便链式调用,如a = b = c ;)strlen在参数为NULL(等价于0,’\0’)时会抛异常,所以MyString的构造函数需要...原创 2019-07-15 16:14:46 · 159 阅读 · 0 评论 -
拷贝构造,赋值,右值拷贝构造,右值拷贝赋值函数的使用
1.c++编译器返回值优化 由于编译器默认开启了返回值优化(RVO/NRVO, RVO, Return Value Optimization 返回值优化,或者NRVO, Named Return Value Optimization)。 虽然各大厂家的编译器都已经都有了这个优化,但是这并不是c++标准规定的,而且不是所有的返回值都能够被优化,而这篇文章的主要讲的右值引用,移动语义可以解决...原创 2019-07-15 00:17:52 · 888 阅读 · 1 评论 -
拷贝构造函数的参数
拷贝构造函数和拷贝赋值函数class A{ A(const A& a);};问题:参数是否一定要加const?1. 拷贝构造函数的参数1.1 使用不加const的拷贝构造函数#include <iostream>class A { public: A(){std::cout << "A construct." <...原创 2019-07-14 15:09:01 · 3139 阅读 · 0 评论