【转载】c++之类的基本操作(c++ primer 的读书笔记 ,类对象, 类用户, 类成员的含义)

C++ Primer Message和Folder类 在写包含这两个类的头文件时,有一个问题值得注意。 我是先写Message类后写Folder类的,而这两个类又需要操作对方的成员,因此要定义为友元类。而且,在定义Message类前一定要有Folder类的前向声明,Message有用到Folder类对象的函数都需定义在Folder类后,否则无法编译通过(未定义当然是无法使用的)。因此我所写的头文件的结构为: Folder类前向声明 - Mes... 阅读详情

一前言

看c++ primer有一个地方看的云里雾里的,这么一段话

可以认为 protected 访问标号是 private 和 public 的混合:
• 像 private 成员一样,protected 成员不能被类的用户访问。
• 像 public 成员一样,protected 成员可被该类的派生类访问。
此外,protected 还有另一重要性质:
• 派生类只能通过派生类对象访问其基类的 protected 成员,派生类对其基类类型对象的 protected 成员没有特殊访问权限


这里就完全看不明白了,freeeim可能是翻译的问题导致的,老外写的本来就有点绕,翻译过来就更加绕,很难理解。

那么我们以下面的代码为例子。大家先看看觉得那句话编译会报错。

我之前写的代码都是编译错了之后,自己再去修改,而没有特别仔细的去思考到底为什么定义为pubulic ,protected和private,总是到这里弄不清楚,稀里糊涂就过去了,为了弄清楚,敲了下面的代码,编译之后便一目了然了。

二分析代码

先自己分析一下,然后后面在公布答案。


  1. class A  
  2. { 
  3. public: 
  4.         int set(A& a); 
  5.         int public_a_var; 
  6. protected: 
  7.         int protected_a_var; 
  8. private: 
  9.         int private_a_var; 
  10. }; 
  11.  
  12.  
  13. int A::set(A &a) 
  14. { 
  15.         protected_a_var = a.protected_a_var; 
  16.         private_a_var = a.private_a_var; 
  17.         public_a_var = a.public_a_var; 
  18. } 
  19. class B:A 
  20. { 
  21.         public: 
  22.                 int anotherset(A& a, B& b); 
  23.                 int public_b_var; 
  24.         protected: 
  25.                 int protected_b_var; 
  26. private: 
  27.                 int private_b_var; 
  28. }; 
  29.  
  30.  
  31. int B::anotherset(A& a, B& b) 
  32. { 
  33.         public_b_var = a.public_a_var ; 
  34.         public_b_var = b.public_b_var; 
  35.         protected_b_var = a.protected_a_var; 
  36.         protected_b_var = b.protected_b_var; 
  37.         private_b_var = a.private_a_var; 
  38.         private_b_var = b.private_b_var; 
  39.  
  40.  
  41.  
  42.  
  43.         public_a_var = a.public_a_var ; 
  44.         public_a_var = b.public_b_var; 
  45.         protected_a_var = a.protected_a_var; 
  46.         protected_a_var = b.protected_b_var; 
  47.         private_a_var = a.private_a_var; 
  48.         private_a_var = b.private_b_var; 
  49. } 
  50.  
  51.  
  52. int main() 
  53. { 
  54.         A main_a; 
  55.         int a = main_a.private_a_var; 
  56.         int b = main_a.protected_a_var; 
  57.         int c = main_a.public_a_var; 
  58. } 
class A 
{
public:
		int set(A& a);
		int public_a_var;
protected:
		int protected_a_var;
private:
		int private_a_var;
};


int A::set(A &a)
{
		protected_a_var = a.protected_a_var;
		private_a_var = a.private_a_var;
		public_a_var = a.public_a_var;
}
class B:A
{
		public:
				int anotherset(A& a, B& b);
				int public_b_var;
		protected:
				int protected_b_var;
private:
				int private_b_var;
};


int B::anotherset(A& a, B& b)
{
		public_b_var = a.public_a_var ;
		public_b_var = b.public_b_var;
		protected_b_var = a.protected_a_var;
		protected_b_var = b.protected_b_var;
		private_b_var = a.private_a_var;
		private_b_var = b.private_b_var;




		public_a_var = a.public_a_var ;
		public_a_var = b.public_b_var;
		protected_a_var = a.protected_a_var;
		protected_a_var = b.protected_b_var;
		private_a_var = a.private_a_var;
		private_a_var = b.private_b_var;
}


int main()
{
		A main_a;
		int a = main_a.private_a_var;
		int b = main_a.protected_a_var;
		int c = main_a.public_a_var;
}


三含义介绍

1 类成员的含义

首先说一下概念,c++ primer里面类成员,类对象,类用户,这些词语在c++ primer里面用的乱七八糟的,让人看着很费解,如果你本身又是学过别的c++的书籍,看到上面的一段话估计要崩溃的,讲的是嘛啊?

2 类对象的含义

先解释一下上面这句话:

这里类成员这个词没有任何歧义,就是指类里面的所有变量和函数。

类对象这个词存在歧义,而且这本书里面前后都不一样,要看语境了。

第一种是广义的

比如上文中的,main函数里面的main_a ,set函数里面的a,anotherset函数里面的a, b 都是类对象,而且这本书里面的大部分地方类对象就是广义的。

第二种是狭义的,专指类的成员函数里面的作为参数的类对象。

在某些语境里面,个人觉得一般是出现了类的用户这个词之后,类对象就变成狭义了。

上面那句话里面“派生类只能通过派生类对象访问其基类的 protected 成员”,

其实这里可以这么理解吧,派生类的进行什么操作,描述的就是类的函数了,前面加入了条件限制了,那么这个类对象自然就也被限定了起来。

不过读起来就很费劲了。


3 类的用户

这个词语在一般的c++书上貌似是看不到的,突然之间冒出来一个类的用户,就突然感觉复杂了很多。

其实如果第一句话修改为:

像 private 成员一样,protected 成员不能被类的对象访问。

这个时候,你在看第三句话,就会有疑问,既然protect成员不能被类的对象访问,那怎么又“派生类只能通过派生类对象访问其基类的 protected 成员”,这不是前后矛盾么?

其实并不矛盾,作者也是怕用户看到这里看糊涂了,就引入了类的用户。

类的用户,可以专门指外部函数里面的类的对象,例如main函数里面的main_a ,其他几个就不是类的用户了。


四进一步分析

我们分析一下上面的这一段话,其实有一个前提,没说说明白。

因为作者认为大部分人都应该知道,所以就没有说,也没有强调,但是很多人都是半生不熟的c++然后来看这本书,知道它是经典,但是不知道它不是prime,至少你得写了一年的c++代码,至少你得吃过苦头才能明白。

废话不说了,前提是:

类的成员函数中的类对象,可以访问自己的所有类型的成员。

换句话说,狭义的类对象,可以访问自己的所有类型的成员。

类的成员函数中其实是个定语,虽然很长。

第三句话的前半段,“派生类只能通过派生类对象访问其基类的 protected 成员”,因为派生类已经继承了基类,所以protected也是它自己的成员,基于这个前提,它狭义的类对象,自然可以访问自己的protected变量。

第三局话的后半段,当基类对象作为参数的时候,这句话更绕,我们用继承类代替前面那句话的类,就是由于基类对象不属于继承类的成员函数的继承类对象,所以它本质上不属于这个继承类的对象,所以它的权限就和类的用户是一样的。


五分析代码

上面已经把人说晕了,我分析下代码吧。

  1. int A::set(A &a) 
  2. { 
  3.         protected_a_var = a.protected_a_var; 
  4.         private_a_var = a.private_a_var; 
  5.         public_a_var = a.public_a_var; 
  6. } 
int A::set(A &a)
{
		protected_a_var = a.protected_a_var;
		private_a_var = a.private_a_var;
		public_a_var = a.public_a_var;
}

这三句话都正确。

这里有两个概念,protected_a_var ,private_a_var已经public_a_var实质是this.开头的,指的是类的成员(其实也是类当前对象的成员),入参是类型A的对象a,由于类型一样,所以可以操作a的任何变量。

这个原理我不知道,面向对象的思想吧,其实面向对象就是仿照人类社会。我们可以这么理解如果大家是一类,或者看成一家人,在构建这个家庭的时候,我们内部的各种东西都是共享的。

但是当我们出了这个家门,在外面的时候,只有我们家公共的信息可以告诉别人,但是私有的密码,必然家里多少钱,银行密码之类的就不能说了。

  1. int B::anotherset(A& a, B& b) 
  2. { 
  3.         public_b_var = a.public_a_var ; 
  4.         public_b_var = b.public_b_var; 
  5.         protected_b_var = a.protected_a_var; 
  6.         protected_b_var = b.protected_b_var; 
  7.         private_b_var = a.private_a_var; 
  8.         private_b_var = b.private_b_var; 
  9.  
  10.  
  11.  
  12.  
  13.         public_a_var = a.public_a_var ; 
  14.         public_a_var = b.public_b_var; 
  15.         protected_a_var = a.protected_a_var; 
  16.         protected_a_var = b.protected_b_var; 
  17.         private_a_var = a.private_a_var; 
  18.         private_a_var = b.private_b_var; 
  19. } 
int B::anotherset(A& a, B& b)
{
		public_b_var = a.public_a_var ;
		public_b_var = b.public_b_var;
		protected_b_var = a.protected_a_var;
		protected_b_var = b.protected_b_var;
		private_b_var = a.private_a_var;
		private_b_var = b.private_b_var;




		public_a_var = a.public_a_var ;
		public_a_var = b.public_b_var;
		protected_a_var = a.protected_a_var;
		protected_a_var = b.protected_b_var;
		private_a_var = a.private_a_var;
		private_a_var = b.private_b_var;
}

看看这段代码,继承其实就像分家了,我们有一些共有的东西,也有一些私有的东西,但是也不是特别的贴切这个比喻。这样吧,就像娶老婆了。老婆说,你的都是我的,我的还是我的。其实都不贴切,如果大家看过龙珠的话,可以这么认为,就像是那美克星人的生殖,儿子继承类父亲的所有能力,而且自己还会不断进步。

废话不说了,我们还是分析加上必要的记忆吧。

先看前六句:

我们根据上面的理解,赋值语句前面的变量,class B都可以访问,后面的如果类型是class B的因为是一家人都可以访问,a 的只能访问public类型的,所以结果为

  1.               public_b_var = a.public_a_var ; 
  2. public_b_var = b.public_b_var; 
  3. protected_b_var = a.protected_a_var;//错误,a.protected_a_var是保护的。 
  4. protected_b_var = b.protected_b_var; 
  5. private_b_var = a.private_a_var;//错误,a.private_a_var是私有的 
  6. private_b_var = b.private_b_var; 
                public_b_var = a.public_a_var ;
		public_b_var = b.public_b_var;
		protected_b_var = a.protected_a_var;//错误,a.protected_a_var是保护的。
		protected_b_var = b.protected_b_var;
		private_b_var = a.private_a_var;//错误,a.private_a_var是私有的
		private_b_var = b.private_b_var;

下面六句话,继承的时候,继承类的成员只能访问protect和pirvate所以结果如下

  1.               public_a_var = a.public_a_var ; 
  2. public_a_var = b.public_b_var; 
  3. protected_a_var = a.protected_a_var;//错误,a.protected_a_var是保护的。 
  4. protected_a_var = b.protected_b_var; 
  5. private_a_var = a.private_a_var;// 两个错误,private_a_var 和a.private_a_var都不能访问,是私有的 
  6. private_a_var = b.private_b_var;//private_a_var是私有的,赋值语句前面的那个 
                public_a_var = a.public_a_var ;
		public_a_var = b.public_b_var;
		protected_a_var = a.protected_a_var;//错误,a.protected_a_var是保护的。
		protected_a_var = b.protected_b_var;
		private_a_var = a.private_a_var;// 两个错误,private_a_var 和a.private_a_var都不能访问,是私有的
		private_a_var = b.private_b_var;//private_a_var是私有的,赋值语句前面的那个

最后分析main函数里面的


  1. int a = main_a.private_a_var;//错误,a.private的私有 
  2. int b = main_a.protect_a_var;//错误,a.protect是保护 
  3. int c = main_a.public_a_var; 
                int a = main_a.private_a_var;//错误,a.private的私有
                int b = main_a.protect_a_var;//错误,a.protect是保护
                int c = main_a.public_a_var;

6 结果。

大家可以编译测试一下:上面文章有原因,本来想标记为红色,但是代码类型的不会标记,如果有达人知道,希望在评论里面回复一下,便于大家查看代码。

  1. <span style="font-size: 14px;">class A  
  2. { 
  3. public: 
  4.         int set(A& a); 
  5.         int public_a_var; 
  6. protected: 
  7.         int protected_a_var; 
  8. private: 
  9.         int private_a_var; 
  10. }; 
  11.  
  12.  
  13. int A::set(A &a) 
  14. { 
  15.         protected_a_var = a.protected_a_var; 
  16.         private_a_var = a.private_a_var; 
  17.         public_a_var = a.public_a_var; 
  18. } 
  19. class B:A 
  20. { 
  21.         public: 
  22.                 int anotherset(A& a, B& b); 
  23.                 int public_b_var; 
  24.         protected: 
  25.                 int protected_b_var; 
  26. private: 
  27.                 int private_b_var; 
  28. }; 
  29.  
  30.  
  31. int B::anotherset(A& a, B& b) 
  32. { 
  33.         public_b_var = a.public_a_var ; 
  34.         public_b_var = b.public_b_var; 
  35.         protected_b_var = a.protected_a_var;//error 
  36.         protected_b_var = b.protected_b_var; 
  37.         private_b_var = a.private_a_var;//error 
  38.         private_b_var = b.private_b_var; 
  39.  
  40.  
  41.  
  42.  
  43.         public_a_var = a.public_a_var ; 
  44.         public_a_var = b.public_b_var; 
  45.         protected_a_var = a.protected_a_var;//error 
  46.         protected_a_var = b.protected_b_var; 
  47.         private_a_var = a.private_a_var;//error 
  48.         private_a_var = b.private_b_var;//error 
  49. } 
  50.  
  51.  
  52. int main() 
  53. { 
  54.         A main_a; 
  55.                 int a = main_a.private_a_var;//error 
  56.         int b = main_a.protected_a_var;//error 
  57.         int c = main_a.public_a_var; 
  58. }</span> 
class A 
{
public:
		int set(A& a);
		int public_a_var;
protected:
		int protected_a_var;
private:
		int private_a_var;
};


int A::set(A &a)
{
		protected_a_var = a.protected_a_var;
		private_a_var = a.private_a_var;
		public_a_var = a.public_a_var;
}
class B:A
{
		public:
				int anotherset(A& a, B& b);
				int public_b_var;
		protected:
				int protected_b_var;
private:
				int private_b_var;
};


int B::anotherset(A& a, B& b)
{
		public_b_var = a.public_a_var ;
		public_b_var = b.public_b_var;
		protected_b_var = a.protected_a_var;//error
		protected_b_var = b.protected_b_var;
		private_b_var = a.private_a_var;//error
		private_b_var = b.private_b_var;




		public_a_var = a.public_a_var ;
		public_a_var = b.public_b_var;
		protected_a_var = a.protected_a_var;//error
		protected_a_var = b.protected_b_var;
		private_a_var = a.private_a_var;//error
		private_a_var = b.private_b_var;//error
}


int main()
{
		A main_a;
                int a = main_a.private_a_var;//error
		int b = main_a.protected_a_var;//error
		int c = main_a.public_a_var;
}



2021.02.23丨Virsorter2安装使用及答疑 最近项目比较多,又在学英语,写文章的时间少了很多。最近接到一个病毒组装的项目。用之前组装工具(ABYSS、SPAdes)都没有能够组装较为完整的scafford,今天介绍一款专门用于组装病毒的工具——Virsorter。 Virsorter最早版本发布于2015年,目前已经有了第二个版本。主要用于病毒的组装的注释。详细情况可以查看文章:https://peerj.com/articles/985/ 安装流程 安装文档: https://github.com/jiarong/VirSorter2/b 阅读详情

相关推荐

玩转肺癌目标检测数据集Lung-PET-CT-Dx ——①从TCIA获取影像数据集

该目标检测公共数据集源自 The Cancer Imaging Archive(TCIA),是肿瘤研究方面的著名的医学影像公开数据库。 数据以 DICOM 格式存储,由肺癌受试者的 CT 和 PET-CT DICOM 图像组成。

takedachia的博客 1万+

明明白白c++之类的基本操作(c++ primer 的读书笔记 ,类对象, 类用户, 类成员的含义)

一前言 看c++ primer有一个地方看的云里雾里的,这么一段话 可以认为 protected 访问标号是 private 和 public 的混合: • 像 private 成员一样,protected 成员不能被类的用户访问。 • 像 public 成员一样,protected 成员可被该类的派生类访问。 此外,protected 还有另一重要性质: • 派生类只能通过派生类对象

destiny_m的专栏 2208

详解在linux上安装vpn客户端

详解在linux上安装vpn客户端

FuncPlotCalc 8433

c++类——成员类

如有兴趣了解更多请关注我的个人博客。

xiaohei07的博客 1033

2023年全国赛C题《 电容电感测量装置》设计报告

参考下面网站的方案参考LCR测试仪,基本工作原理为给DUT加上正弦激励信号,然后测得该DUT两端的电压和流过DUT的电流,即可通过计算得到DUT的性质和参数。对于一个理想电容,电流相位应该超前电容两端电压90°。然而实际的电容存在损耗,可以等效为一个理想电容Cp​和一个理想电阻Rp​的并联,因此电流超前电压的相位将小于90°,这个角度差即为损耗角。假设DUT两端电压V˙Vcosωt,流过DUT的电流为I˙Isinωt−φ。

moerjie的博客 4818

科研智能体平台搭建与实战:大模型如何驱动科研自动化

大模型技术的快速发展,正推动AI智能体从单纯对话工具向主动执行任务的科研伙伴演进。智能体的核心原理在于整合模型调用、工具使用、知识库检索与工作流编排,使其能够自主拆解目标、执行操作并迭代优化。在科研场景中,这一技术价值尤为突出:文献初筛、实验数据清洗、代码调试、结果汇总等高频重复劳动均可实现自动化,大幅释放研究者精力。从基础组件配置到多智能体协同,从平台选型到提示词调优,实际落地需要关注模型匹配、工具稳定性、记忆管理与人机校验机制。本文基于真实工程经验,系统梳理科研智能体平台的搭建路径、应用案例与高频问题排

weixin_32597009的博客 289

浅谈C++|类的成员

this指针本质是指针常量,指针的指向是不可以修改的(person* const this),但是this指针指向地址的值是可以发生改变的。创建类时,被包含的类的构造函数先调用,随后外层类的构造函数再调用,析构1的时候正好相反,外部类先析构,内部类再析构。同样,静态成员函数也是可以通过类名来调用,需要注意静态成员函数只能调用静态成员变量。只能成功调用没有this指针的函数,因为此时this是空指针,含有this的调用。有元函数不是类的成员函数,但是却又权限调用类的所有成员变量。

m0_73731708的博客 771

Matlab 轴承信号仿真+分析

文章目录项目说明1、信号仿真1.1 仿真公式1.2 信号参数设置1.3 代码实现2、仿真信号分析2.1 小波变换2.2 快速谱峭度 项目说明 本文主要解决两个问题: 1、仿真包含周期性冲击信号、随机干扰冲击信号、调制干扰信号以及随机噪声四个成分的故障轴承信号; 2、使用小波变换以及快速谱峭度对该仿真信号进行分析。 1、信号仿真 1.1 仿真公式 这里的仿真信号公式主要参考了包文杰学者的硕士论文《加权谱峭度故障诊断方法研究与应用》,列举公式如下: 周期性冲击信号仿真 随机干扰冲击信号仿真 调制

cocofisher的博客 9269

c++类详解

C++中的类是面向对象编程的基石,通过封装数据和方法,可以实现模块化、可重用、可扩展的代码结构。希望读者通过学习类的知识,能够灵活运用面向对象编程的思想,编写出高效、可维护的C++程序。本文将详细介绍C++中的类概念、类的成员、访问控制以及构造函数和析构函数,并提供多个具体示例代码以帮助读者深入理解类的使用和设计。通过类,我们可以创建多个对象,每个对象都拥有相同的数据成员和成员函数,但可能存在不同的状态和行为。成员函数可以是公有的、私有的或受保护的,用于控制对数据成员的访问权限。

浪子回头 2556

使用 Simulink + Simscape Electrical 对锂电池储能系统的充放电管理策略进行建模与仿真

摘要:本文详细介绍了基于Simulink的锂电池储能系统充放电管理策略建模与仿真方法。重点阐述了系统结构设计、建模过程(包括锂电池模型、充放电控制器、热管理系统等模块搭建)以及仿真设置。通过分析荷电状态管理、温度控制和功率限制等核心要素,展示了如何实现安全高效的充放电策略。仿真结果可验证系统性能,为优化管理策略提供依据。该方法为新能源存储和智能电网应用提供了实用的仿真分析工具。

amy_mhd的博客 160

第17章 后端开发最佳实践 —— OpenSpec + 智能体的工程化实战

后端开发有大量重复性的"样板代码"工作。我们可以创建自定义 Skill,让 AI 自动生成标准的三层架构代码。创建 Skill:后端 CRUD 生成器以 CodeBuddy 为例,在创建:其他工具用户请参考各自文档,了解如何创建自定义 Skills 或类似机制。skill.md## 描述根据实体定义自动生成标准的三层架构代码(Controller-Service-Repository)## 适用场景- 快速创建实体的 CRUD 接口- 保持代码结构一致性- 减少重复性编码工作## 使用方法。

快乐的修补匠的专栏 323

C++基本类成员函数

有参数的构造函数,可以在初始化对象时,直接传入参数,比如我们这里有两个参数char * cc,char *bb。可以通过一个对象初始化另一个对象,用”=“实现,MYcode& operator=(const MYcode& p),用来获取对象的地址,普通取地址成员函数获取普通对象地址,const修饰的取地址成员函数获取const修饰的对象地址。特性:~加类名称(~Mycode),一个类只有一个,当对象结束生命周期时,自动调用析构函数结束释放内存。(参数1类型 参数1,参数2类型,参数2)

zhangguojia7的博客 1777

lammps案例:Cu三点弯曲模拟

大家好,我是小马老师。 本文分享一个Cu弯曲的案例。 本案例参考三点弯曲实验,三点弯曲试验是将试样放在弯曲装置上,在试样上加载进行弯曲试验,直到达到规定的弯曲程度或发生断裂。 模拟原理是在z方向固定两侧端点,在x和y方向不固定,模拟左右两个支撑点,中间压块向下运动实现弯曲。 初始结构: 运行结果为: 模拟的重点是使用fix setforce命令压住左右两端,使其不能沿z轴上下移动,但是又不能在xy方向限制其移动。 压块的运动方式比较简单,给其一个下压的速度即可。 为防止压块变形,使用setforce命

lammps_jiayou的博客 2279

C++ Primer (暂时完结)

C++ PrimerC++ 预备知识泛型编程第二章 开始学习C++2.1.3 C++预处理器 和iostream 文件名称空间第二章 输出输入endl控制符换行符规范的书写格式c++源码风格程序清单2.2 C++ 预备知识 面向对象的编程(OOP) 什么是类,什么是对象 类包含 数据和操作 泛型编程 独立于特定的数据类型, 和数据类型无关,不管你是什么数据类型,只实现这个功能 第二章 开始学习C++ main 函数框架 g++是编译c++工具的 任何一个程序的开始都是从main开始 单片机可

hxhxhxhxx的博客 7849

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

快速上手Cpp-Primer-5th-Exercises:新手必备的C++练习指南 [特殊字符]

想要系统学习C++编程语言,但面对《C++ Primer》这本经典教材的练习题感到无从下手?别担心!Cpp-Primer-5th-Exercises项目为你提供了完整的练习解答,帮助你快速掌握C++编程的核心概念和技巧。这份终极指南将带你深入了解这个宝贵的C++学习资源,让你在编程学习道路上事半功倍! ## 📚 项目简介:你的C++学习好帮手 Cpp-Primer-5th-Exercises

gitblog_01075的博客 1074

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C++ Primer 中文版 第5版 读书笔记

分离式编译如果想声明一个变量而非定义它,就在变量前添加关键字extern// 声明i,而非定义iint j;// 声明并定义j任何包含了显示初始化的声明即成为定义。我们能给由extern关键字标记的变量赋一个初始值,但是这么做也就抵消了extern的作用。extern// 定义变量能且只能被定义一次,但是可以多次声明标准库类型string表示可变长的字符序列// 列表初始化// 错误注意字符串字面值的结尾处还有一个空字符如前所述,switch的执行流程有可能会跨过某些case标签。

weixin_44623642的博客 1848

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

GetQzonehistory:把十年QQ空间历史说说完整导出,Excel和网页一次拿全

GetQzonehistory 是一个本地运行的 Python 小工具,用来把你 QQ 空间发过的历史说说完整抓取下来,导出成 Excel 表格和一个还原空间样式的网页文件,长期存在自己的硬盘里。适合说说发得多、想把这些旧记录完整存档的人。 ## 先说结果:跑完之后你会得到什么 程序跑完后会自动打开 `resource/result/你的QQ号/` 这个文件夹,里面是一套完整的东西: | 产

gitblog_00301的博客 631

Node-RED 数据处理实战手册:JSON、XML、CSV 的互转与排错

Node-RED 的数据处理,主要靠核心解析器里的一组节点完成:JSON、XML、CSV(还有 HTML、YAML),它们能把 msg 里的字符串、对象和表格数据互相转换。这篇文章不按"技巧清单"罗列,而是跟着一条数据在流程里走完全程:怎么从字符串变成对象,怎么在 XML 和 CSV 之间互转,字段对不上或坏消息出现时怎么办,最后再看怎么提速。 ## 数据入口:三步把 JSON 字符串解析成对象

gitblog_00964的博客 1058

TeamAI 自动同步揭秘:AI 会话如何静默获取团队最新资源的完整指南

TeamAI 是一款开源的 AI 团队资源管理 CLI 工具(teamai-cli),它的自动同步机制可以让 Claude Code、Codex、Cursor 等 AI 助手在**每次会话启动时静默拉取团队最新的技能、规则与知识**,全程无需人工干预。本文带你彻底搞懂这套机制背后的原理。✨ ## 什么是 TeamAI 自动同步? 想象这样一个场景:管理员更新了团队的编码规则,昨天还有效的技能今

gitblog_01132的博客 994

c++primer读书笔记1-13篇(转载)

来源: www.lqqm.net,作者: lingjie  发布日期:Fri Apr  1 15:23:49 2005此文是我初学c++时候写的一点东西,很粗浅只能帮助一些人习惯这本书的思维和作 者的风格,别的不敢有任何妄想。到目前只有13篇,将来也许会接着写一些。但不 做任何保证,如果写出来误人子弟或者老调重谈,倒不如不写,对不对? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

白云百川的专栏 3124

【C++ primer plus】函数探幽中

这里是上一篇文章的绪论,其实还要写一篇,太多知识点了,这个本书很难,只能说作者看的要废了,然后这个是基于作者的理解,然后部分后面讲的省掉了,只找重点,让我们理解这里面的重点知识引用的绪论我们可以知道结构体和类的引用的使用方法,什么时候使用引用引用我们需要注意的就是const修饰,返回值的类型,用const修饰的时候,计算机会进入哪一些操作,提示临时变量引用,类,继承我们这里需要知道基类,派生类是什么含义基类的引用作为形参的话,进行传实参的时候,既可以是派生类或者基类。

2401_86738532的博客 1436

掌握C++模板编程:Cpp-Primer-5th-Exercises第16章实战指南

C++模板编程是C++ Primer第5版第16章的核心内容,也是提升C++编程能力的关键技能。通过Cpp-Primer-5th-Exercises项目中的实战练习,你将系统掌握模板类、函数模板、模板特化等核心概念,轻松应对复杂的泛型编程挑战。 ## 为什么模板编程是C++开发者的必备技能 🚀 模板是C++实现泛型编程的基础,它允许你编写与类型无关的代码,大幅提高代码复用性和灵活性。在标准库

gitblog_00320的博客 936

C++ primer读书笔记(一)

C++ primer读书笔记之第1章 前言 研究生开学也已经大半个月了,导师的方向是做C++开发。我这个苦逼的研究僧也只有跟着老师的项目学习C++。我之前也只有C语言和一小部分Java的基础,和大家一样对于C++的学习都是从零开始的。而且我的本科还不是计算机专业,是隔壁的通信专业,对于C++的学习仅限于24个学时的大学计算机基础。所以我们一起学习,共勉! 对于C++的初步认识 因为之前学过一段时间...

或许没有的博客 419

《C++ Primer Plus》《11、使用类》

介绍C++如何使用类

zwh1298454060的博客 962
上一篇: 【转载】浅析游戏引擎开发
下一篇: 对于内向、不善于社交的人来说,如何建立人脉?
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值