6.9k 6 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 友元、异常和其他 # 友元 类并非只能拥有友元函数,也可以将类作为友元。这种情况下,友元类的所有方法都可以访问原始类的「私有成员」和 「保护成员」,此外还可以做更加细致的限制。例如:只将特定成员函数指定为另一个类的友元。 # 友元类 声明一个类 B 是另一个类 A 的友元类: class A{public: friend class B; // B 能访问 A 的私有成员};# 友元成员函数 声明一个类成员函数为另一个类的友元函数: class A{ friend...
13k 11 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # C++ 中的代码重用 # 包含对象成员的类 简单定义一个 Student 类型,并在类中包含对象成员 string name 和 valarray<int> q_vals 。 // .h#pragma once#ifndef STUDENT_H_#define STUDENT_H_#include<iostream>#include<cstring>#include<valarray>using std::string;using...
6.3k 6 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 类继承 类继承可以提供到的一些功能: 在已有类的基础上添加新的功能。 可以给类添加数据。 可以修改类方法的行为。 # 一个简单的基类 编写一个简单的 Worker 类: // .h#pragma once#ifndef BASE_CLASS_H#define BASE_CLASS_H#include <string>using std::string;class Worker {private: string frist_name; string last_name; bool...
7k 6 分钟

以下为个人学习笔记整理 # 二、小李的公司生活① # 第⑤课 森 (もり) さんは  七時 (しちじ) に  起 (お) きます # 语法解释✨ # 今 (いま) ~ 時 (じ) ~ 分 (ふん) です 意为现在是~时候 示例 今 (いま)  四時 (よじ)  三十分 (さんじゅっぷん) です。(现在是 4 点 30 分) # 「动」ます/「动」ません ❘「动」ました/「动」ませんでした 「动」ます/「动」ません:用于修饰现在、习惯性、未来的动作。前者表示肯定,后者表示否定 「动」ました/「动」ませんでした:用于修饰过去的动作。前者表示肯定,后者表示否定 示例 森 (もり)...
7.7k 7 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 类和动态内存分配 # 动态内存和类 # 编写一个简单的 string 类 stringbad.h #pragma once#include <iostream>#ifndef STRINGBAD_H_#define STRINGBAD_H_class StringBad {private: char* str; int len; static int num_strings;public: StringBad(const...
4.4k 4 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 使用类 # 运算符重载 C++ 允许给运算符赋予多种含义, C++ 支持自定义运算符的含义。 // op: +、-、*、[] ...operator op(arguemrnt-list)# 计算时间:重载运算符示例 tm.h 头文件: class Time {private: int hours; int minutes;public: Time(); Time(int h, int m); Time operator +(const Time& t) const; void...
3.4k 3 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 对象和类 # 抽象和类 # 类型是什么🤔 类型的三个特性: 决定了数据对象所需的内存数量。 决定了如何解释内存内的数据(long 和 float 在内存中占用位数相同,但转化为的值不相同。) 决定了数据对象能够执行的操作和操作的内容。 # C++ 中的类 类的规范由两个部分组成: 类声明:描述类的数据成员,描述类的成员函数(接口)。 类方法定义:描述类的成员函数实现。 // 头文件class Stock{private: char company[30]; int shares; double...
7k 6 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 内存模型和名称空间 # 单独编译 将程序进行合理的拆分,可以降低代码的维护成本: 头文件:包含结构体声明和使用这些结构体的函数原型。 函数原型。(函数定义不要放在头文件,如果同一个程序的多个源文件使用了函数定义,会导致出错) 使用 #define 或 const 定义的符号常量。 结构体声明。 类声明。 模板声明。 内联函数。 名称空间内上述内容的定义。 源代码文件:包含与结构体有关的函数的代码,函数的定义,名称空间内函数的定义。 源代码文件:包含调用与结构体相关函数的代码,调用名称空间内函数的代码。 #...
5.1k 5 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 函数介绍 # C++ 内联函数 内联函数更像是把函数贴入到调用的位置,这样可以提高函数跳转所带来的开销。 声明内联函数: 在函数声明前加上关键字 inline ; 在函数定义前加上关键之 inline ; inline double square(double x){return x * x; }int main(){ double a = square(1.5); return...
536 1 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 函数指针 函数地址:「函数名」就是函数的地址 声明函数指针:声明函数指针,必须能够体现函数的一些特性,例如参数和返回值。 double func(int); // 函数声明double (*p_f)(int); // 函数指针声明# 有意思的声明😁 两种声明方法最终的结果一致,即: p_f == (*pf) void test_p_func(void p_f(int)) { p_f(1);}void test_p_func(void (*p_f)(int))...