C++ primer
sean-zhao
爱屋及乌
展开
-
c++ 初始化列表VS构造函数内赋值初始化成员变量
1. 只说区别a.const类成员只能使用初始化列表的方式b.自定义类的类型的变量初始化,尽量采用初始化列表的方式。避免类的构造+类的拷贝的双重代价。初始化列表只涉及成员变量类的构造//自定义类型a//构造函数内对m_a的赋值class test{ test(class a) { m_a = a;//构造 + 拷贝 }}//初始化列表对m_a的赋值class test{ test(class a):m_a(a) //构造 {原创 2022-05-25 09:23:59 · 201 阅读 · 0 评论 -
5种创建指向数组的智能指针shared_ptr/unique_ptr的方法
//OK, pointer to int 999std::shared_ptr<int> sp(new int(999)); template< typename T >struct array_deleter{ void operator ()( T const * p) { delete[] p; }};// pointer to int array, // (1) provide array deleterstd::shared_.转载 2021-12-29 10:20:51 · 823 阅读 · 0 评论 -
常用设计模式小结
1 创建型设计模式工厂(factory) 、抽象工厂(abstractfactory)、 单例(singleton)、原型(prototype)模式主要针对的是某一类对象的或者同一类对象的静态设计的模式2 结构设计模式桥接( bridge) 适配器(adapter) 代理(proxy)中心思想就是类对象之间的关系的低耦合方式,有可能是算法与功能逻辑流程的分离实现、有可能是代理的方式3 行为设计模式...原创 2021-02-24 10:30:01 · 74 阅读 · 0 评论 -
面向对象的软件设计目标和原则
松耦合( Coupling)高内聚( Cohesion)原创 2021-02-24 10:13:37 · 288 阅读 · 0 评论 -
虚函数和纯虚函数的用法和区别
//转载 https://blog.csdn.net/fujibao/article/details/81356303虚函数和纯虚函数可以定义在同一个类(class)中,含有纯虚函数的类被称为抽象类(abstract class),而只含有虚函数的类(class)不能被称为抽象类(abstract class)。虚函数可以被直接使用,也可以被子类(sub class)重载以后以多态的形式调用,而纯虚函数必须在子类(sub class)中实现该函数才可以使用,因为纯虚函数在基类(base cla转载 2021-02-24 09:50:19 · 201 阅读 · 0 评论 -
C++ string compare比较
使用 ==而不是equal原创 2020-12-10 17:11:25 · 230 阅读 · 1 评论 -
C++宏定义不受命名空间的约束
C++宏定义不受命名空间的约束原创 2020-11-26 14:32:54 · 590 阅读 · 0 评论 -
simple code for c++ condition_variable and mutex
#include <stdio.h>#include <string.h>#include <sys/time.h>#include <unistd.h>#include <math.h>#include <iostream>#include <condition_variable>#include <chrono>#include <mutex>std::mutex dat.原创 2020-09-15 15:18:59 · 105 阅读 · 0 评论 -
C++ 拷贝构造函数
1.三原则在C++中,下面三种对象需要拷贝的情况。因此,拷贝构造函数将会被调用。 1). 一个对象以值传递的方式传入函数体 2). 一个对象以值传递的方式从函数返回 3). 一个对象需要通过另外一个对象进行初始化原创 2016-09-07 19:58:01 · 253 阅读 · 0 评论 -
C++类的继承总结
C++类的继承总结原创 2016-09-07 10:00:44 · 663 阅读 · 0 评论 -
C++ 公有继承的注意要点
1.is-a关系如果派生类不是一种特殊的基类,就不要public继承2.什么不能被继承构造函数不能。 析构函数不能。 赋值运算符不能3.赋值运算符如果编译器发现程序将一个对象赋值给另外一个同类的对象,则自动为这个类提供一个赋值运算符。4.私有和保护成员对派生类而言,保护成员类似于公有成员 外部而言,保护和私有类似。 派生类只能通过基类的成员函数访问私有。5.虚方法如果希望派生类能重新定义方法原创 2016-09-07 09:56:11 · 386 阅读 · 0 评论 -
C++ 类设计回顾
A.Main attentions1.默认构造函数 默认构造函数要么没有参数,要么所有参数都是默认值。如果没有定义任何构造函数,编译器将定义默认构造函数。 自动生成的构造函数,具备调用基类的默认构造函数以及调用本身是对象的成员的所属的默认构造函数。 如果派生类函数成员初始化列表不显式的调用基类构造函数,则编译器将调用基类的默认构造函数来构造派生类的基类部分。原创 2016-09-07 09:46:37 · 508 阅读 · 0 评论 -
C++中delete和delete[]的区别
原文:http://www.cnblogs.com/charley_yang/archive/2010/12/08/1899982.htmlC++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2)转载 2016-09-06 16:44:26 · 283 阅读 · 0 评论 -
C++ 释然
学习C++的难点之一是需要记住大最的东西,但在拥有丰富的实践经验之前,根木不可能全部记住这些东西。从这种意义上说,学 习 C++就像学习功能鉍杂的字处理程序或电子制表程序一样。任何特性都不可怕,但多数人只攀握了那些经常使用的特性,如查找文本或设贾为斜体等。您可能在那里曾经学过如何生成替换字符或者创建目录,除非经常使用它们,否则这些技能可能根本与H 常工作无关。也许,学习木章知识的最好方法是,在我们自原创 2016-09-05 19:18:25 · 577 阅读 · 0 评论 -
C++ 类名()小解
在不考虑用new动态创建对象的情况下,用最普通的 类名 对象名(参数); 的方法创建对象 先贴上最正常最普通的代码 ` #include using namespace std;class C{ public: C(){ cout<<”Hello C++\n”; }; C(int m){ cout<<”I love C+转载 2016-09-06 10:47:57 · 5115 阅读 · 6 评论 -
C++ const成员函数
原文://http://blog.csdn.net/lihao21/article/details/8634876 我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误。例如,const char blank = ‘’; blank = ‘\n’; // 错误 面向对象程序设计中,为了体现封装性,通常不允许直接修改类对象的数据成员。若要修改类对象,转载 2016-09-06 11:14:50 · 233 阅读 · 0 评论 -
C++ 类的使用
1.友元函数一般来说,访问私有类成员的唯一方法是使用类方法。C++ 使用友元函数来避幵这种限制。要让函数成为友元,需要在类声明中声明该函数,并在声明前加上关键字friend。2.运算符重载C++ 扩展了对运算符的重载,允许自 定义特殊的运算符函数,这种函数描述了特定的运算符与类之间的关系。 运算符函数可以是类成员函数,也可以是友元函数( 有一件运算符函数只能是类成员函数)。要调用 运算符函数,可以原创 2016-09-06 11:36:47 · 770 阅读 · 0 评论 -
C++ 类的派生和继承
1.outline已有类派生出新的类,新的类继承了其原有类的特征1). 添加新的数据 2).添加新的功能 3).修改类的方法 ··· 从一个类派生出另一个类时,原始类称为基类,继承类称为派生类。 ··· ##2.基本操作class a:public b{ ....}指 出 a类的基类是b类。上述特殊的声明头表明b是个公有基类,这被称为公有派生。派生类对象包含基类对原创 2016-09-06 13:27:07 · 3620 阅读 · 1 评论 -
C++ virtual 虚函数
1.基本原理通常,编译器处理虚函数的方法是:给每个对象添加一个隐藏成员。隐藏成员中存储了为类对象进行声明的虚函数的地址。例如,基类对象包含以一个指针,该指针指向基类中所有虚函数的地址表。派生类对象包含一个指向独立地址表的指针。如果派生类提供了虚函数的新定义,该虚函数将保存新函数的地址。如果没有,该vtbl将保存函数原始版本的地址。如果新定义了,则添加到vtbl中。调用虚函数时,将查看在vtbl地址,原创 2016-09-06 15:40:44 · 262 阅读 · 0 评论 -
c++ 虚函数要点
构造函数不能是virtual析构函数应当是virtual,除非类不作基类。 如果b是a类的派生类,用new创建了b后,delete后。如果析构函数非虚,则delete只调用a的析构函数,而不会调用b,造成内存泄漏;如果定义为虚函数,则会首先调用b的析构函数,再调用a的析构函数。友元不能是虚函数。因为友元不是成员函数,只有成员函数才可以是虚函数。 4.原创 2016-09-06 15:50:54 · 235 阅读 · 0 评论 -
C++ private与protect的区别
区别只在基类派生的类中才会表现出来。派生类的成员可以直接访问基类的保护成员,但不能直接访问基类的私有成员。但对于派生类来说,保护成员的行为与公有成员相似。原创 2016-09-06 15:59:18 · 9523 阅读 · 0 评论 -
C++ 纯虚函数 pure virtual function && ABC
defination纯虚函数声明的结尾处为0attention.1当类中包含纯虚函数时,则不能创建该类的对象。只能作基类。attention.2在类中可以不定义。attention.3原创 2016-09-06 16:34:00 · 738 阅读 · 0 评论 -
C++ 对象和类
1.总结面向对象编程强调的是程序如何表示数据。使 用 O O P 方法解决编程问题的第一步是根据它与程序之间的接口来描述数据,从而指定如何使用数据。然后,设计一个类来实现该接口。一般来说,私有数据成员存储信息,公 有 成 员 函 数 ( 乂称为方法)提供访问数据的唯一途径。类将数据和方法组合成一个单元,其私有性实现数据隐藏。通常,将类声明分成两部分组成,这两部分通常保存在不同的文件中。类 声 明原创 2016-09-05 19:10:15 · 368 阅读 · 0 评论