C++可直接 类名:: (作用域符)访问的成员及用typename区分AA::BB形式

C++:C++11 C++11是继C++98/03后的重要标准升级,引入约140个新特性,显著提升语言安全性、效率与表达力。核心内容包括:统一列表初始化({})、auto与decltype类型推导、nullptr空指针、范围循环、智能指针、右值引用与移动语义、完美转发、lambda表达式、可变参数模板、std::function与std::bind包装器,以及强大的线程库和原子操作支持。这些特性使代码更简洁、高效,极大推动现代C++开发实践。 阅读详情

目录

1.静态成员

2.类型别名

3. 枚举类型及其成员:

4.嵌套类/结构体/联合体:

5.生存周期

6.typedef typename作用

        在C++中,类的公有静态数据成员、静态成员函数、类型别名、枚举类型及其成员(枚举常量)、嵌套类/结构体/联合体等可以通过类名加作用域解析运算符(::)来直接访问。对于非静态的公有数据成员和成员函数,你需要一个类的实例(对象)来访问它们。

1.静态成员

静态成员(无论是数据成员还是成员函数)是与类本身相关联的,而不是与类的特定对象相关联。因此,你可以直接通过类名加::来访问它们,而不需要创建类的实例。

class MyClass { 

public: 

    static int staticMember; // 静态数据成员 
    static void staticFunction(); // 静态成员函数 
	   // ... 其他成员 ... 
}; 


	int MyClass::staticMember = 0; // 定义并初始化静态数据成员

	void MyClass::staticFunction() { 
	        // 静态成员函数的实现 
	} 


int main() { 
	// 直接通过类名访问静态成员 
    MyClass::staticMember = 42; 
    MyClass::staticFunction(); 
    // ... 其他代码 ... 

	return 0; 
}

2.类型别名

类型别名(使用typedef或using定义)是另一种可以直接通过类名加::来访问的公有成员。类型别名在模板编程中尤其有用,因为它们允许你为复杂的类型表达式提供简短的名称。

class MyClass { 
public: 
    typedef int ValueType; // 使用 typedef 定义类型别名 
    using AnotherType = double; // 使用 using 定义类型别名(C++11及以后) 
}; 


int main() { 
// 直接通过类名访问类型别名 
    MyClass::ValueType var1 = 10; 
    MyClass::AnotherType var2 = 20.0; 
    return 0; 
}

3. 枚举类型及其成员:

class MyClass {  
public:  
    enum Color { RED, GREEN, BLUE };  
};  
int main() {  
    MyClass::Color color = MyClass::RED; // 访问枚举类型及其成员  
    return 0;  
}

4.嵌套类/结构体/联合体:

class MyClass {  
public:  
    struct NestedStruct {  
        int x;  
        float y;  
    };  
};  
int main() {  
    MyClass::NestedStruct ns; // 声明嵌套结构体类型的变量  
    ns.x = 10;  
    ns.y = 3.14f;  
    return 0;  
}

5.生存周期

静态数据成员具有静态生存周期
静态生存周期是指如果对象或者变量从定义的那一刻起,一直到程序的结束才销毁。

而函数和类型别名本身不占用存储空间

类型别名是在其声明的地方定义的,仅仅是一个名称的引用

函数是在程序编译时确定的代码块,它们不是程序运行时的对象(实例),因此没有与对象相关的生命周期概念。

6.typedef typename作用

typedef typename _Alloc_traits::size_type		size_type;

那么问题来了,为什么要加上typename关键字?

直接用typedef  _Alloc_traits::size_type        size_type;   不行吗

实际上,这是因为对于形如AA::BB这样的形式,它有可能是一个类型,也有可能是类的静态成员,这个时候加上typename就是为了告诉编译器,它后面的一大串字符串都是一个类型。 

【16】linux命令/工具,systemd,文件操作,动静态库,信号,socket apt install python3-pip --fix-missing(断开vpn,cp /etc/apt/sources.list /etc/apt/sources.list.bak,python3 -m pip install --upgrade pip,apt-get update,pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com)设置时间,联网,apt-get install vim。 阅读详情

相关推荐

【Ultrascale+ MPSOC学习记录】6、从eMMC启动翻车

因为MPSOC还有一种启动模式是eMMC,接下来咱就实现从eMMC启动。

ryo891012的博客 474

C++类对象成员的访问

使用方法

分享代码和经验 3106

Java开发者必看:5分钟搞定PaddleOCR表格识别,导出Excel和HTML超详细教程

本文为Java开发者提供了集成PaddleOCR实现智能表格识别的详细教程,包括环境配置、核心代码实现、结果导出到Excel和HTML的步骤,以及性能优化技巧。通过PaddleOCR技术,开发者可以快速将图片表格转换为结构化数据,大幅提升工作效率。

weixin_30872499的博客 98

C++类学习笔记——C++类成员访问

文章目录前言一、对象成员选择运算符 (点)二、C语言和C++中对象成员选择运算符使用方法三、C++访问说明符总结 前言 此文章为初学者为巩固知识创作,大佬轻喷。 上期简单介绍了C++类的声明和类成员,这期简单介绍C++类成员的访问 以下是本篇文章正文内容,下面案例可供参考 一、对象成员选择运算符 (点) 学过C语言的都知道struct(结构体)创建出来的对象可以通过对象成员选择运算符(.)来访问C语言结构体内部成员 二、C语言和C++中对象成员选择运算符使用方法 废话不多说,直接代码: struct S

qq_55904031的博客 5019

智能测试策略优化:平衡覆盖率、时间和资源

在软件开发过程中,测试是确保软件质量的关键环节。然而,测试工作往往面临着诸多挑战,其中如何在保证测试覆盖率的前提下,合理分配时间和资源是一个核心问题。本文章的目的在于探讨智能测试策略的优化方法,帮助软件测试团队在有限的时间和资源条件下,实现尽可能高的测试覆盖率。文章的范围涵盖了智能测试策略的核心概念、算法原理、数学模型、实际应用案例以及相关工具和资源等方面。本文将按照以下结构进行组织:首先介绍智能测试策略优化的背景和相关概念,包括核心术语和缩略词的定义;

AIGC应用创新大全的博客 619

015:机载三维激光扫描技术相关知识

机载三维激光扫描系统(LiDAR)是集激光、GPS、INS等尖端技术于一体的三维航空遥感技术,能高效准确获取地表三维信息。该系统由GPS、INS、激光扫描测距系统、成像装置和工作平台组成,各部件协同工作以获取精确的空间定位、运动状态、地表三维坐标及真实色彩信息。通过制定飞行计划、安置GPS基站、激光扫描测量、惯性测量及获取高清数码影像等步骤,机载LiDAR技术能实时获取大范围高精度三维数据。该技术具有扫描速度快、精度高、全数字特征等优势,广泛应用于测绘、工程、环境监测和城市建设等领域,如城市三维模型重建、灾

qq_31762031的博客 1726

【001 类和数据的抽象】C++中类成员的访问权限?

return 0;当你在main()函数中执行int b = ca.a;这句代码时,是main()函数在访问对象ca的成员变量a,而不是ca自己在访问它自己的成员变量,这就是外部访问。那么,什么是内部访问呢?比如CA的构造函数CA()本身是对象ca的成员函数,在这个构造函数的内部也在访问a,这就是ca自己在访问自己的成员变量,这就是内部访问。如果是在对象ca的外部,

kashine的博客 1838

【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?

本文介绍了Halcon中为XLD轮廓模板添加极性信息的实用技巧。通过先以"ignore_local_polarity"模式创建模板,首次匹配获得位置后,使用set_shape_model_metric运算符结合真实图像为模板注入极性信息(边缘明暗方向)。这种方法弥补了XLD模板初始不支持极性的缺陷,可显著提升后续匹配的精度和抗干扰能力。实验显示,添加极性信息后的模板匹配效果明显优于无极性的匹配结果。该技术特别适用于基于手动绘制或处理后的XLD轮廓创建模板的场景。

songhuangong123的博客 750

C++中类对象访问方法

C++三种访问类成员方法

qq_41092994的博客 2348

Linux系统安全学习手册

Linux反弹shell Linux系统应急响应 Linux服务器安全加固 Linux下的用户、组和权限 Linux中的gcc Linux中su和sudo的用法和区别 Linux系统python2与python3共存 Linux中grep工具的使用 Linux中环境变量的设置 Linux中常见的150个命令(干货) Linux中编写Shell脚本 LNMP环境搭建Wordpress博客 LAMP环境搭建一个Discuz论坛 Linux运维比较常用的一些脚本 Linux系统中安装软

谢公子的博客 7532

《信息化项目文档模板十二——业务需求新增/变更审批确认表 》

系列文章目录 《信息化项目文档模板一——项目需求说明书》 《信息化项目文档模板二——项目启动会文档模板》 《信息化项目文档模板三——会议纪要模板》 《信息化项目文档模板四——系统项目蓝图设计模板》 《信息化项目文档模板五——系统详细设计模板》 《信息化项目文档模板六——系统详细设计模板》 《信息化项目文档模板七——系统开发计划模板》 《信息化项目文档模板八——系统功能测试模板》 《信息化项目文档模板九——系统压力测试模板》 《信息化项目文档模板十——系统推广上线计划模板》 《信息化项目文档模板十一——系统用

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1712

C++面向对象编程 - 友元函数:C++中的友元函数可以访问类的私有和保护成员

要将函数声明为类的友元,可以在类的声明中使用friend关键字。private:public:// 可以访问MyClass的私有成员```在上面的示例中,`friendFunction`函数被声明为`MyClass`的友元函数。因此,它可以访问`MyClass`的私有成员`privateMember`。## 友元函数的用途友元函数在某些情况下非常有用。例如:- **增强类的功能**:有时候需要外部函数来执行某些与类相关的操作,但这些操作又需要访问类的私有成员。

Quantity>Quality 568

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之EcuM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之EcuM模块配置详解(上)

weixin_42412049的博客 1015

一纸代码手记

c++不具名命名空间 命名空间是用来防止对象重复定义的。 不具名命名空间也是防止对象重复定义的,只是没有名字而已 不能在头文件中书写不具名命名空间 在cpp 中写不具名命名空间,本文件中是可以直接使用,别的文件无法使用。 namespace { int x; int y; int myfun(); } utf8、utf8 BOM、utf8带签名 UTF-8 BOM与UTF-8带签名指的是同一回事,二者指的是UTF-8的同一格式 UTF-8 BOM中的BOM,全称

南城小馆 900

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

(C++)自定义功能基础汇总

本文系统介绍了C++中的关键概念和特性。主要内容包括:1)域的概念,特别是命名空间域的定义和使用;2)函数特性如缺省参数、重载和模板;3)类的核心特性,包括访问控制、构造函数/析构函数、操作符重载、继承和多态;4)模板编程,涵盖函数模板和类模板的基本用法、特化技巧;5)lambda表达式的语法和使用场景。文章详细讲解了这些特性的语法规则、使用场景和底层原理,特别对多态的实现机制和虚函数表进行了深入剖析。通过大量代码示例,展示了如何在实际开发中应用这些C++特性,同时指出了常见错误和注意事项。

Bruce_Arthur的博客 693

android 蓝牙通讯demo

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

C++笔记(初阶)

C++学习笔记!

hi_ro_a的博客 554

VC中sqlite的使用

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

C++学习

C++基础学习、函数模板、动态内存、新特性、面向对象编程、类的设计以及STL标准模板库的学习

2601_94965056的博客 223

【C++】C++11(右值引用/移动语义/lambda/可变模板参数/包装器)

C++11新特性摘要:C++11是继C++98/03后的重要更新,带来约140个新特性。主要改进包括:1) 统一的列表初始化语法,支持所有内置和自定义类型;2) 右值引用和移动语义,解决深拷贝效率问题;3) 自动类型推导(auto)和类型获取(decltype);4) lambda表达式简化匿名函数编写;5) 可变参数模板支持更灵活的泛型编程;6) 完美转发(std::forward)保持参数类型属性;7) 新增移动构造和移动赋值默认成员函数;8) 包装器(std::function)统一函数对象调用方式。

wefg1的博客 817

C++模板特化:全特化与偏特化的原理、陷阱与工业实践

C++模板特化是实现零成本抽象和类型精准控制的核心机制,本质是在编译期为特定类型或类型族提供定制化实现。其原理基于SFINAE和重载解析规则,通过全特化(完全替换)和偏特化(模式匹配)实现行为分化,从而规避通用模板的语义失配与性能损耗。技术价值在于消除运行时多态开销、保障内存安全与跨版本兼容性,在高频交易、自动驾驶、序列化框架等场景中不可替代。典型应用场景包括std::vector<bool>的位压缩优化、智能指针的空值防护、容器递归序列化及自定义类型的二进制编码。本文深入剖析C++模板全特化与偏特化的语法

weixin_34008784的博客 420

python self.__class__.__name__ 理解

1.__class__属性 实例调用__class__属性时会指向该实例对应的类 然后可以再去调用其它类属性,类属性由类调用 example: self.__classs__.__name__//首先用self.__class__将实例变量指向类,然后再去调用__name__类属性 2.self.__classs__.__name__ 获取类名 cla...

weixin_36670529的博客 7920

python 获取当前class名和方法名

代码如下: # coding=utf-8 import sys class Hello(): def hello(self): print('the name of method is ## {} ##'.format(sys._getframe().f_code.co_name)) print('the name of class is ## ...

whatday的专栏 1万+

__class__.__name__和__class__.__module__

1.__class__.__name__ 生成对象的类,或者生成类的元类的名称。 2.__class__.__module__ 生成对象的类,或者生成类的元类所在的模块的名称。

su_da_sheng的博客 925

python的__name__、__class__、__dict__、__module__、__qualname__,以及dir的含义与使用场景

目录 前言 实战 1、__dict__ 2、__class__ 3、__name__ 4、__module__ 5、__qualname__ 前言 在一些底层代码中,我们经常可以看到__name__/__class__等用法的存在,其实我们能从字面上的意思大概猜到各自的作用,但是具体不知到他们指向的是哪个对象。今天就统一记录一下。 这些模块的功能我并没有去百度,我是直接去拿着python IDE去测试的,其实对于这种很简单的功能的测试,建议大家不要第一想法就是搜索引擎查找用法..

NeverLate_gogogo的博客 5159

self.__class__.__name__

包含 if __name__ == '__main__' 原理

Yy_Rose的博客 2782

初识C++中的Class类(二)。

类的6个默认成员函数的总结

weixin_54428357的博客 227

python类介绍

一.类的定义--class关键字1. 类是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。使用class语句来创建一个新类,class之后为类的名称(User)并以冒号结尾,类的组成包括成员变量(name,age)和成员函数(who),如下实例:classUser: name='zhzhgo' age=2...

weixin_34416754的博客 170
下一篇: C++无名命名空间namespace(匿名命名空间)和全局静态变量
思路可以啊
博客等级 码龄6年 91粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值