![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++/c
Linus Torvalds:我没有见过比c更优秀的语言。
用这个专栏记录一下在使用以及学习c++/c的过程中的所学所思所想
雷小c
这个作者很懒,什么都没留下…
展开
-
C++ Complex类实现
Complex类是典型的不含指针的类。下面贴出代码:#ifndef __COMPLEX_H_#define __COMPLEX_H_// a += b += c; 结合律 right -> left// cout << a << b; 结合律 left -> right#include <iostream>//编译器会生成默认的拷贝构造,拷贝赋值,和析构函数class Complex {public: Complex原创 2021-04-03 16:31:24 · 617 阅读 · 0 评论 -
C++典型String类的编写(包含move实现)
C++面向对象是区别于C的典型特征,C++中类有两种不同的类型。数据成员不含指针的;典型代表有Complex类。数据成员含指针的;典型为字符串String类。C++11中提出了新概念move semantics(可译为移动语义),可以简单理解为移动语义为**“浅拷贝”**,具体可查资料了解。下面贴出String类的具体代码:#ifndef __STRING_H_#define __STRING_H_ #include <cstring>#include <iostre原创 2021-04-03 14:38:43 · 717 阅读 · 0 评论 -
C++虚函数指针vptr与虚函数表vtbl
这里写了一个测试模拟对象内存模型中的虚函数调用机制(业界称动态绑定,Dynamic Binding)。#include <iostream>using namespace std;struct TMP { int a; int b; int c; TMP() { a = 1; b = 1; c = 1; } int operator*() const{ return a + b + c; }};TMP t1, t2, t3;TMP arr[] = {t原创 2021-03-14 22:43:35 · 222 阅读 · 0 评论 -
C++ pointer-like class
C++2.0之前,有个智能指针叫auto_ptr。->符号作用下去之后,会一直作用下去。sp->已经作用完了,还能px->吗? 可以的,会一直作用下去,这样子这个设计才有意义。代码:template<typename T>class shared_ptr {public: shared_ptr(T* p) : px(p) {} // 智能指针一定是这种写法,重载 * 和 -> T& operator*() const{ return *p原创 2021-03-13 23:12:43 · 142 阅读 · 0 评论 -
C++显式构造函数和隐式构造函数
函数中参数的叫法:parameter一般认为叫参数;argument一般认为叫实参;参数个数和实参个数是不一样的。//对于A这么个类,有个构造函数A(int a, int b, int c = 1) : a(m), b(n) {}这里认为parameter参数需要3个,argument实参2个,3个肯定没问题(但是只要两个实参就够了)。explicit关键字一般用在类的构造函数中,表示显式创建对象,编译器不能隐式转换构造。见代码:#include <iostream>原创 2021-03-13 20:06:10 · 2022 阅读 · 0 评论 -
C++转换函数Conversion function
C++中的转换函数能将一个 “类型” 转化为你想要的 “类型”,不管是built-in 类型还是 user-defined 类型。方法为operator typename() {}见代码:#include <iostream>using namespace std;class Fraction {public: Fraction(int num, int den = 1) : m_numerator(num), m_denominator(den) {} opera原创 2021-03-13 19:28:11 · 193 阅读 · 0 评论 -
C++继承和组合情况下构造和析构顺序
第一种情况这里主要是考虑,Base part和Component part哪个先构造的问题。上代码:#include <iostream>using namespace std;class Component {public: Component(int c = 0) : _C_c(c) { cout << "调用Component的构造函数" << endl; } ~Component() { cout << "调用Comp原创 2021-03-13 17:55:56 · 150 阅读 · 0 评论