随笔分类 -  C/C++

上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要:条款32:确定你的public继承塑模出is-a关系 Inheritance and Object-Oriented Design public继承奉行的规则 如果class D以public形式继承自class B,便是告诉编译器:每个类型为D的对象同时是一个类型为B的对象,反之不成立。需要用到D 阅读全文
posted @ 2021-11-27 17:03 明明1109 阅读(114) 评论(0) 推荐(0) 编辑
摘要:函数调用运算符 函数调用运算符用“operator ()”表示。如果类重载了函数调用运算符,可以像使用函数一样使用该类对象。 例如,像下面一样重载了某个struct或class的operator(),其对象就能像函数一样调用。 // 类重载operator() struct absInt { // 阅读全文
posted @ 2021-11-23 00:14 明明1109 阅读(488) 评论(0) 推荐(0) 编辑
摘要:lambda表达式简介 lambda表达式是C++11新特性(C++11 特性),用于创建一个可调用单元,可理解成匿名内联函数。 可调用单元 是指什么? 可调用单元通常是指可调用对象(或函数)。 可调用对象 一个对象或表达式,如果可对其使用可调用运算符("()"),则称这个对象或表达式为可调用对象。 阅读全文
posted @ 2021-11-22 15:15 明明1109 阅读(2735) 评论(0) 推荐(0) 编辑
摘要:条款26:尽可能延后变量定义式的出现时间 Postpone variable definitions as long as possible. 为什么要延后变量定义? 因为定义一个变量会有构造成本和析构成本,而该变量可能从始至终并未使用过。因此,如果能尽量避免,就能减少这些成本。 如何延后变量定义? 阅读全文
posted @ 2021-11-20 20:12 明明1109 阅读(94) 评论(0) 推荐(0) 编辑
摘要:条款18:让接口容易被正确使用,不易被误用 Make Interfaces easy to use correctly and hard to use incorrectly. 如果想要开发一个“容易被正确使用,不容易被误用”的接口,考虑客户可能犯什么样的错误呢? 假设用一个用来表现日期的class 阅读全文
posted @ 2021-11-18 21:58 明明1109 阅读(67) 评论(0) 推荐(0) 编辑
摘要:条款13:以对象管理资源 Use objects to manage resources. 传统new/delete 申请、释放资源的问题 class Investment { ... }; class Factory { public: static Investment* createInves 阅读全文
posted @ 2021-11-17 10:05 明明1109 阅读(99) 评论(0) 推荐(0) 编辑
摘要:条款05:了解C++默认编写并调用了哪些函数 Know what functions C++ silently writes and calls. 如果你没自己声明,编译器就会为你的class声明:一个copy构造函数、一个copy assignment操作符,一个析构函数。如果没有声明任何构造函数 阅读全文
posted @ 2021-11-16 12:59 明明1109 阅读(94) 评论(0) 推荐(0) 编辑
摘要:条款:01:视C++为一个语言联邦 View C++ as a federation of languages. 如何理解C++? 将C++视为一个由相关语言组成的联邦而非单一语言。主要的4个次语言(sublanguage): C, C++的基础 Object-Oriented C++, C wit 阅读全文
posted @ 2021-11-15 22:47 明明1109 阅读(135) 评论(0) 推荐(0) 编辑
摘要:今天调试C++自定义String代码的时候,碰到一个问题,编译期报错:对象包含与成员函数不兼容的类型限定符。 先看代码: class String { // 自定义String类 public: String(const char *s) {// 构造函数 if (!s) { len = 0; st 阅读全文
posted @ 2021-11-13 17:02 明明1109 阅读(1231) 评论(0) 推荐(0) 编辑
摘要:C++对象在内存中如何存储? 把这个问题称为C对象模型(C Object Model)。下面对C++对象模型,进行说明: 要存储的内容 C++对象包括数据成员和函数成员。其中, 数据成员分为:static data members(静态数据成员),nonstatic data members(非静态 阅读全文
posted @ 2021-11-12 23:37 明明1109 阅读(159) 评论(0) 推荐(0) 编辑
摘要:11.1 入口函数和程序初始化 11.1.1 程序从main开始吗? 先看3个程序 程序1(C): #include <stdio.h> #include <stdlib.h> int a = 3; int main(int argc, char *argv[]) { int *p = (int * 阅读全文
posted @ 2021-11-06 10:44 明明1109 阅读(890) 评论(0) 推荐(0) 编辑
摘要:10.1 程序的内存布局 现代APP(应用程序)都运行在一个内存空间里,32bit系统有4GB地址空间。APP直接用32bit位地址寻址,称为平坦(flat)的内存模型。该模型中,整个内存是一个统一的地址空间,用户可以用一个32bit指针访问任意内存位置。 OS会将4GB内存空间分段,不同的段有不同 阅读全文
posted @ 2021-11-03 09:28 明明1109 阅读(326) 评论(0) 推荐(0) 编辑
摘要:1.1 从Hello World说起 本书解决什么问题? 对于最简单的C Hello World: #include <stdio.h> int main() { printf("Hello World\n"); return 0; } 程序为什么要被编译器编译了之后能运行? 编译器把C程序转化成可 阅读全文
posted @ 2021-11-01 16:31 明明1109 阅读(199) 评论(0) 推荐(0) 编辑
摘要:16 模板与泛型编程 OOP,能处理类型在程序运行之前都未知的情况;泛型编程,在编译时能获取类型。 模板是泛型编程的基础。本章学习如何定义自己的模板。 16.1 定义模板 问题引出:假设希望编写一个函数来比较2个值,并指出第一个值是<, > or == 第二个值。实际编程中,可能想要定义多个重载函数 阅读全文
posted @ 2021-10-30 19:40 明明1109 阅读(623) 评论(0) 推荐(0) 编辑
摘要:本章主要内容,类定义构造函数,用来控制在创建此类型对象时做什么。学习类如何控制该类型对象拷贝、赋值、移动或销毁时做什么。 主要函数:拷贝构造函数、移动构造函数、拷贝赋值运算、移动赋值运算符以及析构函数。 拷贝控制操作 -- 拷贝和移动构造函数,定义了当用同类型的另一个对象初始化本对象时做什么。 拷贝 阅读全文
posted @ 2021-10-30 19:40 明明1109 阅读(89) 评论(0) 推荐(0) 编辑
摘要:环境说明 Ubuntu版本: 14.04.1 x86_64 LTS g++ 版本: 4.8.4 问题 terminate called after throwing an instance of 'std::system_error' g++编译cpp源码后,运行程序出现错误提示:“terminat 阅读全文
posted @ 2021-10-27 14:25 明明1109 阅读(1736) 评论(0) 推荐(0) 编辑
摘要:Linux系统为进程预定义了3个流:标准输入、标准输出、标准错误。进程启动时,会自动打开。 3个流分别对应文件描述符(int):STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO; 对应文件指针(FILE *):stdin、stdout、stderr; 缓冲 标准I/O 阅读全文
posted @ 2021-10-26 17:54 明明1109 阅读(890) 评论(0) 推荐(0) 编辑
摘要:结论: 1)cin.getline从cin读取数据,受限于用户提供缓存大小; 2)C++ getline搭配string,从cin读取一行字符串,无缓冲区大小限制; 3)C getline从stdin读取数据,空间会自动扩充,但需要用户手动释放; 利用getline函数从标准输入流读取一行字符串,有 阅读全文
posted @ 2021-10-26 00:01 明明1109 阅读(4915) 评论(0) 推荐(0) 编辑
摘要:2两方法: 使用math中的宏定义M_PI; 利用arccos(-1) = π,来计算π值; #include <iostream> #include <iomanip> #define _USE_MATH_DEFINES // 使用math.h中的M_PI宏定义需要 #include <math. 阅读全文
posted @ 2021-10-25 00:00 明明1109 阅读(9102) 评论(0) 推荐(1) 编辑
摘要:环境准备 名称 版本 下载/安装方式 描述 Ubuntu ubuntu 18x64 官网下载 ubuntu 官网https://ubuntu.com/download/desktop perl 最新版 apt-get 脚本解释器,编译openssl用 g++ 最新版 apt-get C++编译器 m 阅读全文
posted @ 2021-09-20 10:28 明明1109 阅读(883) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 下一页