Web前端c++是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web前端c++是啥意思?相关的知识,希望对你有一定的参考价值。
C++是一种面向对象的计算机程序设计语言,由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。它是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。 C++是C语言的继承,进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 参考技术A Web前端c++是指使用C++语言开发Web前端的应用程序或框架。Web前端是指用户通过浏览器访问的网页或网站的界面和交互部分,通常使用html、CSS和javascript等技术实现。C++是一种编译型、面向对象、泛型和多范式的编程语言,具有高性能、灵活性和跨平台的特点。使用C++开发Web前端的优势是可以利用其高效的内存管理、多线程支持和底层操作能力,提升Web应用程序的性能和安全性。同时,C++也可以通过WebAssembly技术编译成二进制格式,在浏览器上运行,实现与JavaScript等语言的互操作。C++ 中的 :: 是啥意思? [复制]
【中文标题】C++ 中的 :: 是啥意思? [复制]【英文标题】:What does the :: mean in C++? [duplicate]C++ 中的 :: 是什么意思? [复制] 【发布时间】:2011-03-29 15:54:00 【问题描述】:void weight_data::rev_seq(string &seq)
//TODO
std::reverse(seq.begin(), seq.end());
在这个C++方法中,我觉得这个方法没有返回任何东西,所以前缀是void
,::
告诉weight_data
和rev_seq(string &seq)
之间的关系是什么?谢谢!
【问题讨论】:
:: 在 PHP 中被称为 Paamayim Nekudotayim。 【参考方案1】:weight_data
是 namespace 或类名。
【讨论】:
【参考方案2】:void
是返回类型。 ::
是作用域解析运算符,所以这意味着rev_seq
在weight_data
的作用域内。 weight_data
可以是命名空间或类(根据您提供的内容,无法确定是哪个)。
【讨论】:
"weight_data" 被定义为 a.hpp 文件中的一个结构,其中一个名为 "rev_seq" 的方法(未实现),然后在 a.cpp 文件中,这个方法被称为我在问题部分 @ladyfafa:void weight_data::rev_seq(string &seq) ...
是那个成员函数的实现。
@sbi:好的,我明白了;可以多次实施吗?即在不同的 cpp 文件中,对来自结构“weight_data”的同一函数“rev_seq”进行不同的实现
@ladyfafa: 否——C++ 有一个“单一定义规则”(ODR),即任何一个函数只能实现(定义)一次。有几种例外情况(例如,对于内联函数),但它们只是一些例外情况,无论如何这都不适合其中任何一种。
@ladyfafa:通常,定义只能出现一次。 (参见What is the difference between a definition and a declaration?)但是,不同的成员函数可以在不同的实现文件中实现。此外,根据某些先决条件(例如,编译程序的平台),条件编译可用于包含同一实体的多个定义之一。【参考方案3】:
在 C++ 中,
A::B
表示B
是namespace
或class
类型A
中的标识符,
A.B
表示B
是struct
、class
或union
类型的成员,其实例由对象或引用A
引用,并且
A->B
表示B
是struct
、class
或union
类型的成员,其实例由指针A
引用。 (相当于(*A).B
。)
在其他一些语言中,所有这三种情况都只包含在 .
中。
请注意,在 C++ 中,成员函数不必在其类的定义中实现(定义)。 (如果是,则它们隐含为inline
。)它们可以并且经常在单独的实现(.cpp
)文件中实现。这样做的好处是,当您更改类的成员函数之一的实现时,并非类的所有用户都需要重新编译。因此,除非weight_data
是namespace
名称,否则void weight_data::rev_seq(string &seq) ...
是其类之外的类成员的此类定义。
【讨论】:
非常全面,非常感谢! 注意:*
和 ->
运算符可以重载。通常,它们仅对迭代器和智能指针之类的东西进行重载。设计不佳的代码可能会使这些运算符过载。
@Brian:这是一个非常好的观点!【参考方案4】:
void weight_data::rev_seq(string &seq)
行告诉编译器这是来自weight_data
的rev_seq(string &seq)
成员函数的定义。如果这只是说void rev_seq(string &seq) ...
,编译器会认为正在定义一个非成员函数,而不是weight_data
类的rev_seq(string &seq)
成员函数。
class weight_data
void rev_str(string &seq);
这也可能意味着rev_str
指的是作为命名空间weight_data
一部分的函数。
namespace weight_data
void rev_str(string &seq);
【讨论】:
请注意,weight_data
可能是一个命名空间。另外,我认为您的意思是写“如果这只是说void rev_seq(string &seq) ...
...”。
感谢 sbi 让我注意到这一点。【参考方案5】:
刚刚想到添加 2 个关于 ::
的有趣的东西a) 运算符 :: 既是一元运算符又是二元运算符
struct A
int m;
;
int x;
int main()
::x; // Unary
int (A::*p) = &A::m; // Binary
b) $10.3/12 - “显式限定范围运算符 (5.1) 抑制了虚拟调用机制。”
struct A
virtual void f()cout << 1;
;
struct B : A
void f()cout << 2;
;
int x;
int main()
B b;
A &ra = b;
ra.f(); // dynamic binding, prints 2
ra.A::f(); // suppress VF mechanism, prints 1.
【讨论】:
以上是关于Web前端c++是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章